<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Microsoft.Research.Science.Data</name>
    </assembly>
    <members>
        <member name="T:Microsoft.Research.Science.Data.ArrayWrapper">
            <summary>
            Keeps array, its rank and type. Empty and zero-rank arrays are supported.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayWrapper.array">
            <summary>Array of holding actual data. Can be null if there is no data</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayWrapper.rank">
            <summary>Rank of array. Valid even if <see cref="F:Microsoft.Research.Science.Data.ArrayWrapper.array"/> field is null</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayWrapper.type">
            <summary>Type of array elements. Valid even if <see cref="F:Microsoft.Research.Science.Data.ArrayWrapper.type"/> field is null</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ArrayWrapper.#ctor(System.Int32,System.Type)">
            <summary>Initializes a new instance of ArrayWrapper with specified rank and type of elements
            but without data</summary>
            <param name="rank">Rank of array. Zero-ranked arrays are also supported.</param>
            <param name="type">Type of array elements</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ArrayWrapper.GetShape">
            <summary>Return array with shape of wrapper array. Returned array is a copy, so
            it can be modified in any way without affecting ArrayWrapper</summary>
            <returns>Array of integers containing sizes of dimensions</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ArrayWrapper.GetData(System.Int32[],System.Int32[])">
            <summary>Returns copy of data from part of wrapper array</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means entire array.</param>
            <returns>An array of data from the specified region.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ArrayWrapper.PutData(System.Int32[],System.Array)">
            <summary>Writes the data to the wrapped array starting with the specified origin indices.
            </summary>
            <param name="origin">Indices to start adding of data. Null means all zeros.</param>
            <param name="a">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ArrayWrapper.CopyArrayBase(System.Array,System.Array,System.Int32[],System.Int32[],System.Boolean)">
            <summary>
            Base realization of Copy array and the slowest one
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ArrayWrapper.Copy">
            <summary>Creates a copy of ArrayWrapper instance</summary>
            <returns>Full copy of ArrayWrapper</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ArrayWrapper.Data">
            <summary>Gets or sets data for the array</summary>
            <remarks>Array is not copied to the wrapper, so modification of assigned
            array means modification of ArrayWrapper</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ArrayWrapper.Rank">
            <summary>Returns rank of wrapper array. Note that zero-ranked array are supported</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ArrayWrapper.DataType">
            <summary>Return type of elements for this array</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.IDataRequestable">
            <summary>
            Supports asynchronous data requests.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.IDataRequestable.RequestData(System.Int32[],System.Int32[],Microsoft.Research.Science.Data.VariableResponseHandler)">
            <summary>
             Starts an asynchronous get operation.
            </summary>
            <param name="origin">The origin of the window (left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the corned. Null means maximal shape.</param>
            <param name="responseHandler">Delegate for the request completion notification.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.IDataRequestable.RequestData(System.Int32[],System.Int32[],System.Int32[],Microsoft.Research.Science.Data.VariableResponseHandler)">
            <summary>
             Starts an asynchronous get operation.
            </summary>
            <param name="origin">The origin of the window (left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the corned. Null means maximal shape.</param>
            <param name="stride">Steps to stride the variable.</param>
            <param name="responseHandler">Delegate for the request completion notification.</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.IMultipleDataRequestable">
            <summary>
            Supports asynchronous multiple data requests.
            </summary>
            <remarks>
            Asynchronously invokes the <see cref="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])"/> method.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.IMultipleDataRequestable.RequestMultipleData(Microsoft.Research.Science.Data.AsyncMultipleDataResponseHandler,Microsoft.Research.Science.Data.DataRequest[])">
            <summary>
            Asynchronous request for multiple data of the proxy. 
            </summary>
            <param name="requests">Data requests describing what data is to be returned.</param>
            <param name="responseHandler">The handler to receive either response of a fault.</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableResponseHandler">
            <summary>
            The handler for asynchronous variable data requests.
            </summary>
            <param name="response">Result of the request.</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.AsyncMultipleDataResponseHandler">
            <summary>
            The handler for asynchronous GetMultipleData requests.
            </summary>
            <param name="response">Result of the request.</param>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])"/>
        </member>
        <member name="T:Microsoft.Research.Science.Data.AsyncMultipleDataResponse">
            <summary>
            Result of an asynchronous request for multiple data.
            </summary>
            <remarks>
            <para>
            See remarks for the <see cref="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])"/> and 
            <see cref="M:Microsoft.Research.Science.Data.IMultipleDataRequestable.RequestMultipleData(Microsoft.Research.Science.Data.AsyncMultipleDataResponseHandler,Microsoft.Research.Science.Data.DataRequest[])"/> method.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.AsyncMultipleDataResponse.#ctor(Microsoft.Research.Science.Data.MultipleDataResponse)">
            <summary>
            Creates an instance in case of success.
            </summary>
            <param name="response"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.AsyncMultipleDataResponse.#ctor(System.Exception)">
            <summary>
            Creates an instance in case of failure.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.AsyncMultipleDataResponse.Response">
            <summary>
            Gets the response containing data for all requests.
            </summary>
            <remarks>
            <para>
            The property returns <c>null</c>, if <see cref="P:Microsoft.Research.Science.Data.AsyncMultipleDataResponse.IsSuccess"/> is <c>false</c>.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.AsyncMultipleDataResponse.IsSuccess">
            <summary>
            Gets the value indicating whether the operation has been successful or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.AsyncMultipleDataResponse.Exception">
            <summary>
            Gets the exception describing failure in case when <see cref="P:Microsoft.Research.Science.Data.AsyncMultipleDataResponse.IsSuccess"/> property is false.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableResponse">
            <summary>
            Represents the result of an asynchronous request for variable's data.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableResponse.#ctor(Microsoft.Research.Science.Data.Variable,System.Int32[],System.Int32[],System.Array,System.Int32)">
            <summary>
            Use on success.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableResponse.#ctor(Microsoft.Research.Science.Data.Variable,System.Int32[],System.Int32[],System.Exception)">
            <summary>
            Use on failure.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.IsSuccess">
            <summary>
            Gets the value indicating whether the operation has been successful or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.Exception">
            <summary>
            Gets the exception describing failure in case when <see cref="P:Microsoft.Research.Science.Data.VariableResponse.IsSuccess"/> property is false.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.Variable">
            <summary>
            Gets the variable that is the target of the request.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.Origin">
            <summary>
            Gets the origin of the requested region.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.Stride">
            <summary>
            Gets the stride of the requested region.
            </summary>
            <remarks>
            If the request has had no stride, gets null.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.Shape">
            <summary>
            Gets the shape of the requested region.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.Data">
            <summary>
            Gets the requested data.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableResponse.Version">
            <summary>Gets version number this response is originating from.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ReadOnlyCollectionCombination`1">
            <summary>
            Enables smooth iteration through two collections as a single one.
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CoordinateSystem">
            <summary>
            CoordinateSystem maps an index from a space of dimensions into coordinate values
            constructed from axis variables.
            </summary>
            <remarks>
            The <see cref="T:Microsoft.Research.Science.Data.CoordinateSystem"/> class cannot be modified after it is committed.
            Therefore, all axes should be added to the coordinate system before the <see cref="P:Microsoft.Research.Science.Data.CoordinateSystem.DataSet"/>
            is committed.
            <example>
            The followin example creates a coordinate system with a time axis
            and adds a variable defined in the coordinate system.
            <code>
            DataSet ds = . . . ;
            ds.IsAutocommitEnabled = false;
            
            // Creates a variable "time", adds it into the DataSet and then uses it as an axis for the cs:
            Variable&lt;DateTime&gt; time = ds.AddVariable&lt;DateTime&gt;("time", "t");    
            CoordinateSystem cs = ds.CreateCoordinateSystem("cs", time);
            
            // Temperature variable also depends on "t" for it is defined for each time moment.
            Variable&lt;double&gt; temperature = ds.AddVariable&lt;double&gt;("temperature", "t");
            
            // Each value of temperature variable has corresponded time moment from the "time".
            temperature.AddCoordinateSystem(cs);
            
            ds.Commit();
            </code>
            </example>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CoordinateSystem.axes">
            <summary>
            The field stores axes during initialization of the cs.
            After commit, it is null.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.Commit">
            <summary>
            Commits all changes of the coordinate system. 
            </summary>
            <remarks>
            After committing no changes in the coordinate system are allowed.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.GetSchema">
            <summary>
            Gets the schema for the coordinate system describing its structure.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.AddAxis``1(Microsoft.Research.Science.Data.Variable{``0})">
            <summary>
            Adds the variable to the coordinate system as an axis.
            </summary>
            <remarks>
            The variable <paramref name="var"/> must belong to the same data set as the coordinate system does.
            </remarks>
            <param name="var">The variable that is to be considered as an axis.</param>
            <typeparam name="DataType">Data type of the axis.</typeparam>
            <returns>The variable just added as an axis.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.AddAxis(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Adds the variable to the coordinate system as an axis.
            </summary>
            <remarks>
            The variable <paramref name="var"/> must belong to the same data set as the coordinate system does.
            </remarks>
            <param name="var">The variable that is to be considered as an axis.</param>
            <returns>The variable just added as an axis.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.AddAxis``1(System.String,System.String[])">
            <summary>
            Creates and adds the variable as an axis to the coordinate system and related data set.
            </summary>
            <param name="name">Name of the new variable.</param>
            <param name="dims">Names of dimensions the variable depends on.</param>
            <typeparam name="DataType">Data type of the axis.</typeparam>
            <returns>The variable just created and added as an axis.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.GetDimensions">
            <summary>
            Returns committed version of the dimensions list for the coordinate system.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.GetDimensions(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Returns specified version of the dimensions list for the coordinate system.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.GetDimensions(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Returns the dimensions list for the coordinate system base on given changeset.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.ToString">
            <summary>Converts this object to string</summary>
            <returns>String with brief information about coordinate system</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystem.CheckConstraints(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Checks the constraints and throws an exception if the check failed.
            </summary>
            <exception cref="T:System.Exception">Constraints are not satisfied.</exception>
            <remarks>
            <para>The method checks the constraints and throws an exception if the check failed.</para>
            <para>
            The constraint of a coordinate system means reversibility of its every axes' data. 
            Common variable provides an access to its values by an integer index or a vector of indices, 
            but an axis should allow finding an index (or a vector of indices) by a coordinate value 
            from that axis. This is a reversed index selection operation which enables retrieving a value 
            from a variable by its coordinate values in a given coordinate system 
            (see <see cref="M:Microsoft.Research.Science.Data.Variable`1.GetValue(System.Object[])"/>). 
            The constraint in the one-dimensional case is just a claim for data to be strictly monotonic 
            for numeric and date/time data types, or contain no duplicate values for others 
            (for instance, strings).
            </para>
            </remarks>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystem.Name">
            <summary>
            Gets the name of the coordinate system.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystem.Axes">
            <summary>
            Gets the collection of the coordinate system's axes.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystem.AxesArray">
            <summary>
            Gets the collection of axes as an array, i.e. indexed not by variable's ID but index.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystem.AxesCount">
            <summary>
            Gets the number of axes in the coordinate system.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystem.HasChanges">
            <summary>
            Gets the value indicating whether the coordinates system has already been committed or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystem.DataSet">
            <summary>
            Gets the Scientific Data Set instance the coordinate system is attached to.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase">
            <summary>Provides abstract base class for CoordinateSystem collections.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Contains(Microsoft.Research.Science.Data.CoordinateSystem)">
            <summary>Checks whether collection contains specified coordinate system</summary>
            <param name="cs">Coordinate system to locate in collection</param>
            <returns>True, if coordinate system is in the collection or false otherwise</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Contains(System.String)">
            <summary>Checks whether collection contains coordinate system with specified name</summary>
            <param name="name">Name of coordinate system to locate in collection</param>
            <returns>True, if coordinate system is in the collection or false otherwise</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Contains(System.String,Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>Checks whether specified version of collection contains coordinate system with specified name</summary>
            <param name="name">Name of coordinate system to locate in collection</param>
            <param name="version">Version of collection to look in</param>
            <returns>True, if coordinate system is in the collection or false otherwise</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.ToString">
            <summary>Returns string with brief information about all coordinate systems in collection</summary>
            <returns>A String that represents the current collection.</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Item(System.Int32)">
            <summary>
            Gets the committed coordinate system with the given index.
            </summary>
            <param name="index">Zero-based index of the coordinate system to get.</param>
            <returns>The coordinate system.</returns>
            <exception cref="T:System.IndexOutOfRangeException">The exception is thrown if 
            the index is out of range.</exception>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Item(System.String)">
            <summary>
            Gets the committed coordinate system with the given name.
            </summary>
            <param name="name">Name of the coordinate system to get.</param>
            <returns>The coordinate system.</returns>
            <exception cref="T:Microsoft.Research.Science.Data.ValueNotFoundException">The exception is thrown if 
            the coordinate system is not found.</exception>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the coordinate system with the given name from the specified schema version.
            </summary>
            <param name="name">Name of the coordinate system to get.</param>
            <param name="version">Version of the schema to look in.</param>
            <returns>The coordinate system.</returns>
            <exception cref="T:Microsoft.Research.Science.Data.ValueNotFoundException">The exception is thrown if 
            the coordinate system is not found.</exception>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Count">
            <summary>Gets count of coordinate systems in the collection.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Collection">
            <summary>
            Provides an access to internal collection.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.IsReadOnly">
            <summary>Gets a value indicating whether the this collection is read-only.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ReadOnlyCoordinateSystemCollection">
            <summary>
            Represents a read-only coordinate system collection with supporting routines.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyCoordinateSystemCollection.Collection">
            <summary>
            Gets the access to the internal collection.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyCoordinateSystemCollection.IsReadOnly">
            <summary>Gets a value indicating whether the this collection is read-only.</summary>
            <remarks>Always returns true</remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CoordinateSystemCollection">
            <summary>
            Represents a dynamic coordinate system collection with supporting routines.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.#ctor">
            <summary>Initializes an instance of CoordinateSystemCollection with no elements</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.#ctor(Microsoft.Research.Science.Data.CoordinateSystemCollectionBase)">
            <summary>Initializes an instance of CoordinateSystemCollection with contents taken from 
            specified collection</summary>
            <param name="collection">Collection to copy items from</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.GetReadOnlyCollection">
            <summary>
            Wraps the collection into read-only collection and returns it.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.Add(Microsoft.Research.Science.Data.CoordinateSystem)">
            <summary>
            Adds the coordinate system to the collection.
            </summary>
            <param name="cs"></param>
            <exception cref="T:System.Exception">If the collection already contains coordinate system with the same name.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.AddRange(Microsoft.Research.Science.Data.CoordinateSystemCollection)">
            <summary>
            Adds a range of coordinate systems to the collection.
            </summary>
            <param name="coordinateSystemCollection"></param>
            <exception cref="T:System.Exception">If the collection already contains coordinate system with the same name.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.AsNameArray">
            <summary>
            Returns an array of strings with names of coordinate systems.
            </summary>
            <returns>Array of names of coordinate systems.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.AsArray">
            <summary>
            Represents the collection as an array.
            </summary>
            <returns>Array of coordinate systems.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemCollection.Clear">
            <summary>
            Removes all coordinate systems from the collection.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollection.Collection">
            <summary>
            Provides direct access to the inner collection.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemCollection.IsReadOnly">
            <summary>
            Gets the value indicating whether the collection is read only.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataAccessVariable`1">
            <summary>
            Base class for variables granting an access to various data storages.
            </summary>
            <typeparam name="DataType">Type of data for the variable.</typeparam>
            <remarks>
            The class contains logic for data acquiring and updating in related data storage.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Variable`1">
            <summary>    
            Represents a single typed array or a scalar with attached metadata.
            </summary>
            <typeparam name="DataType">Type of data for the variable.</typeparam>
            <remarks>
            <para>
            For type safety and early binding a base class of all variable’s implementations 
            is a generic class <see cref="T:Microsoft.Research.Science.Data.Variable`1"/>, where DataType is a type of an array’s element.  
            To provide a uniform work with variables of unknown or different types, 
            <see cref="T:Microsoft.Research.Science.Data.Variable`1"/> class is derived from a non-generic class <see cref="T:Microsoft.Research.Science.Data.Variable"/>. 
            For example, the collection <see cref="P:Microsoft.Research.Science.Data.DataSet.Variables"/> 
            yields objects of the type 
            <see cref="T:Microsoft.Research.Science.Data.Variable"/> which then might be casted to the required generic type.
            </para>
            <para>
            The generic <see cref="T:Microsoft.Research.Science.Data.Variable`1"/> class adds to the basic <see cref="T:Microsoft.Research.Science.Data.Variable"/> class
            <see cref="M:Microsoft.Research.Science.Data.Variable`1.Append(`0)"/> method to append a single value and a
            typed indexer <see cref="P:Microsoft.Research.Science.Data.Variable`1.Item(System.Int32[])"></see> obtaining a single value from the data array.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
            <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Variable">
             <summary>    
             Represents a single array or a scalar value with attached metadata.
             </summary>
             <remarks>
             <para>
             <see cref="T:Microsoft.Research.Science.Data.Variable"/> represents a single array or a scalar value with attached metadata. 
             <see cref="T:Microsoft.Research.Science.Data.Variable"/> cannot exist separately but always belongs to some <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance. 
             Typically, a variable does not completely load all underlying data into memory, 
             and performs on-demand data access. But in common it depends on a particular 
             implementation of a variable which varies for different <see cref="T:Microsoft.Research.Science.Data.DataSet"/> providers. 
             </para>
             <para>
             Each variable has unique <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/>, <see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> (optional and not unique), <see cref="P:Microsoft.Research.Science.Data.Variable.TypeOfData"/> (i.e. type of an element of variable’s array), 
             <see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/> (number of dimensions of the array), and shape (<see cref="M:Microsoft.Research.Science.Data.Variable.GetShape"/>; lengths of all array’s dimensions). 
             Type of data and rank are specified when variable is created and cannot be modified afterwards. 
             If a variable is not read-only (see <see cref="P:Microsoft.Research.Science.Data.Variable.IsReadOnly"/>), shape is changing as a user puts data into a variable 
             (i.e. into an underlying array). It is important that the Scientific DataSet model doesn’t limit 
             any dimension, i.e. all dimensions are unbounded. In other words, it is possible to extend 
             a variable by each dimension. But a particular <see cref="T:Microsoft.Research.Science.Data.DataSet"/> providers still may force extra constraints. 
             Methods <see cref="M:Microsoft.Research.Science.Data.Variable.GetShape(Microsoft.Research.Science.Data.SchemaVersion)"/> should be used to get a recent shape of a variable.
             </para>
             <para>
             The <see cref="T:Microsoft.Research.Science.Data.Variable"/> supports types given in the table below.
             An attempt to create a variable for a type not listed in the table, 
             leads to an exception <see cref="T:System.InvalidOperationException"/>.
             The static method <see cref="M:Microsoft.Research.Science.Data.DataSet.IsSupported(System.Type)"/> makes dynamic check whether 
             a type is supported or not.
             <list type="bullet">
             <item><description><see cref="T:System.Double"/></description></item>
             <item><description><see cref="T:System.Single"/></description></item>
             <item><description><see cref="T:System.Int16"/></description></item>
             <item><description><see cref="T:System.Int32"/></description></item>
             <item><description><see cref="T:System.Int64"/></description></item>
             <item><description><see cref="T:System.UInt64"/></description></item>
             <item><description><see cref="T:System.UInt32"/></description></item>
             <item><description><see cref="T:System.UInt16"/></description></item>
             <item><description><see cref="T:System.Byte"/></description></item>
             <item><description><see cref="T:System.SByte"/></description></item>
             <item><description><see cref="T:System.DateTime"/></description></item>
             <item><description><see cref="T:System.String"/></description></item>
             <item><description><see cref="T:System.Boolean"/></description></item>
             </list>
             Note that <see cref="T:System.Char"/> is not supported!
             </para>
             <para>
             Not read-only variable may be renamed at any time through the <see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> property. 
             The property updates the proposed name of the variable, which becomes actual only after committing. 
             To get the proposed name, use <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/> accessor for the <see cref="F:Microsoft.Research.Science.Data.SchemaVersion.Proposed"/> version.
             </para>
             <para>Besides a name, a variable has an integer <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> that is given on definition and cannot be modified. 
             The ID is unique inside its <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and can be used for identification of a variable 
             after it’s been renamed. Note that
             several variables with same name within a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> are allowed, but the <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> is unique.
             </para>
             <para>As mentioned above, along with an array a variable contains metadata attached to the data. 
             Metadata is a dictionary of keys and values represented as an instance of the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> class
             and available through the <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/> property. 
             Please see remarks for the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> class to read about constraints on metadata.
             </para>
             <para>
             In fact, the name of a variable is just a metadata entry with name defined in
             <see cref="F:Microsoft.Research.Science.Data.MetadataDictionary.KeyForName"/>. The same is for a missing value.
             Therefore, properties <see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> and <see cref="P:Microsoft.Research.Science.Data.Variable.MissingValue"/>
             just refer the <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/> collection. 
             </para>
             <para>
             List of coordinate systems, attached to a variable, is available through the <see cref="P:Microsoft.Research.Science.Data.Variable.CoordinateSystems"/> collection.
             </para>
             <para>
             How to . . .
             <list type="table">
             <listheader>
             <term>Action</term>
             <description>Solution</description>
             </listheader>
             <item>
             <term>
             Add new variable.
             </term>
             <description>
             <para>
             Methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class, starting with <c>AddVariable...</c>.
             For example, <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.String[])"/>.	
             </para>
             <para>
             See also <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference(Microsoft.Research.Science.Data.Variable,System.String[])"/>,
             <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable,System.String,System.String[])"/>.
             </para>
             </description>
             </item>
             <item>
             <term>
             Put data into a variable.
             </term>
             <description>
             Methods <see cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Array)"/> and <see cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Int32[],System.Array)"/>
             put an array into a variable. Methods <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array)"/>,
             <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.Int32)"/> and <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.String)"/> puts an
             array at the end of the varaible by a certain dimension.
             </description>
             </item>
             <item>
             <term>
             Get data from a variable.
             </term>
             <description>
             Method <see cref="M:Microsoft.Research.Science.Data.Variable.GetData"/> returns entire array of the variables.
             Methods <see cref="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[])"/> and 
             <see cref="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[],System.Int32[])"/> return a part of the data.
             Generic class <see cref="T:Microsoft.Research.Science.Data.Variable`1"/> also has
             an indexer returning a single value for specified indices:
             <code>
             Variable&lt;int&gt; v = (Variable&lt;int&gt;)dataSet["var"];
             int i = v[new int[] { 0 }]; // gets the value at the index { 0 }
             </code>
             </description>
             </item>
             <item>
             <term>
             Work with metadata.
             </term>
             <description>
             Use a <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> collection available through
             the <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/> property.
             <code>
             Variable v = dataSet["var"];
             v.Metadata["Units"] = "m/s";
             . . .
             string units = (string)v.Metadata["Units"];
             </code>
             </description>
             </item>
             </list>
             </para>
             <para>
             Zero-rank variables (also called scalar variables) have <see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/> 
             equal to zero and can contain a single value. To create a scalar variable, common methods like
             <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.String[])"/> should be used. 
             To put data or get data from such
             variable, methods like <see cref="M:Microsoft.Research.Science.Data.Variable.GetData"/> and <see cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Array)"/>
             should be used. The value is represented as a one-dimensional array with a single element.
             Please note, the <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array)"/> doesn't support scalars and 
             throws an exception if is invoked for a scalar variable.
             Another way to put data or get data from scalar variable is to use typed indexer
             from the <see cref="T:Microsoft.Research.Science.Data.Variable`1"/> (as in the example below).
             In all these methods, an <c>origin</c> parameter (if it is required) must be either null, an array of <see cref="T:System.Int32"/>
             or special constant <see cref="P:Microsoft.Research.Science.Data.Variable.DefaultIndices"/>.
             <example>
             <code>
            	Variable&lt;double&gt; scalarDbl = ds.AddVariable&lt;double&gt;("scalarDbl", new string[0]);
            	Assert.IsTrue(scalarDbl.Rank == 0);
            	ds.Commit();
            
            	Debug.WriteLine("Default: " + scalarDbl[null]); // prints "Default: 0"
            
            	// Using PutData and GetData methods:
            	scalarDbl.PutData(new double[] { Math.PI });
            	ds.Commit();
            	Assert.AreEqual(1, scalarDbl.GetData().Length); // contains only one element
            	Assert.AreEqual(Math.PI, ((double[])scalarDbl.GetData())[0]); // true
            	
            	// Using indexer:
            	scalarDbl[Variable.DefaultIndices] = 2*Math.PI;
            	ds.Commit();
            	Assert.AreEqual(2*Math.PI, scalarDbl[Variable.DefaultIndices]); // true
             </code>
             </example>
             </para>
             </remarks>    
             <example>
             <code>
            using(DataSet ds = DataSet.Open("msds:memory"))
            {
             ds.IsAutocommitEnabled = false;
             double[] a = new double[] { 12, 34, 43, 67 };
             double[,] b = new double[,] { { 4, 5 }, { 3, 4 }, { 5, 4 } };
             double[] x = new double[] { 100, 101, 102 };
             
             Variable&lt;double&gt; va = ds.AddVariable&lt;double&gt;("a", a, "x");
             Variable&lt;double&gt; vb = ds.AddVariable&lt;double&gt;("b", b, "x", "t");
            
             vb.PutData(new int[] { 1, 1 }, new double[,] { { 8, 9 }, { 13, 14 }, { 15, 14 } });
            
             ds.Commit();
            
             #region Modifying data in variables
            
             double[] suba = (double[])va.GetData(new int[] { 1 }, null);
             double[,] subb = (double[,])vb.GetData(new int[] { 0, 1 }, new int[] { 2, 2 });
            
             #endregion
            
             Print(ds);
             ds.Commit();
            
             vnames.Append(new string[] { "A", "B", "C", "D" });
             vx.PutData(new int[] { 1, 2, 3 });
            
             Print(vx);
             ds.Commit();
            }
            </code>
             </example>
             <seealso cref="T:Microsoft.Research.Science.Data.Variable`1"/>
             <seealso cref="T:Microsoft.Research.Science.Data.DataSet"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CheckReversibility(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Checks whether the variable is reversible.
            </summary>
            <param name="version">Version of the variable to check.</param>
            <returns>Returns true if the variable is reversible.</returns>
            <remarks>
            <para>
            One of the ScientificDataSet consistency constraints is the constraint on axis data: 
            each axis of numeric and DateTime values must be reversible and an axis of any other type must have 
            no duplicate values. The constraint enables the reversing mechanism which makes it possible to get 
            a value from a variable not only by its indices but also by its coordinate values 
            (for details see remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>). 
            The current release of the library provides a mechanism of the constraint check 
            only for one-dimensional axis and only for numeric and DateTime values. 
            This is the only implemented check for performance reasons.
            </para>
            <para>
            The check is implemented at the level of the <see cref="T:Microsoft.Research.Science.Data.Variable`1"></see> class, 
            the base class for all variables. Therefore each variable inherently enables the reversibility 
            check by default. </para>
            <para>
            There are two methods declared as abstract in the <see cref="T:Microsoft.Research.Science.Data.Variable"/> class and 
            implemented in the <see cref="T:Microsoft.Research.Science.Data.Variable`1"></see> class: 
            public method <see cref="M:Microsoft.Research.Science.Data.Variable.CheckReversibility(Microsoft.Research.Science.Data.SchemaVersion)"/> and internal method <see cref="M:Microsoft.Research.Science.Data.Variable.IndicesOf(System.Object)"/>.</para>
            <para>
            The <see cref="M:Microsoft.Research.Science.Data.Variable.CheckReversibility(Microsoft.Research.Science.Data.SchemaVersion)"/> method makes a check for the given schema version of 
            the variable and returns either true or false depending whether data is reversible or not. 
            The check is actually performed only for one-dimensional variables having a numeric or 
            DateTime data type. For any other case the method just returns true without a check. 
            The method is called in the commit procedure (at the precommit stage; see remarks for 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>) 
            as a part of the CheckConstaints logic of the CoordinateSystem class. 
            This means that it is called at the committing for each variable of a data set being an axis. 
            If the method returns false, the check failed.
            </para>
            <para>
            The current data stored in the data set’s underlying storage is always considered as a consistent, 
            hence when a variable is initialized as an axis on a data set loading, 
            it is also considered as satisfying of all constraints including reversibility 
            without actual check of its persistent data. If the committed variable 
            (that is not an axis) is added as an axis to a coordinate system, 
            then in the next constraint check (i.e. in the nearest commit procedure) 
            all persistent data of the variable is loaded and checked on reversibility. 
            The new data arrays those have been put to the variable are checked during the commit procedure. 
            All these arrays must have the same order and they are also checked in the context of 
            the already committed data (if needed, one value to the left and one to the right 
            of the proposed data array are loaded from the persistent storage and they must 
            be in accordance with the array order itself). The result of the check is cached, 
            so in the next commit the only proposed data arrays are checked.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CheckReversibility(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            Checks whether the variable including the given changes is reversible .
            </summary>
            <param name="changes"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.IndicesOf(System.Object)">
            <summary>
            Returns indices of the variable's element corresponding to the given value.
            </summary>
            <param name="value">The value which index is to be returned.</param>
            <returns>If the value is not found and it is less than one or more elements in array, 
            a negative number which is the bitwise complement of the index of the first element 
            that is larger than value. If value is not found and value is greater than 
            any of the elements in array, a negative number which is the bitwise complement of 
            (the index of the last element plus 1).</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.Variable`1.IndicesOf(`0)"/>.
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable`1.GetValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.changeSetId">
            <summary>
            Current changeset of the variable (not data set!)
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.dimensions">
            <summary>
            Committed array of dimensions.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.csystems">
            <summary>Collection of coordinate systems of the variable.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.changes">
            <summary>Represents changes made in the recent transaction (including schema and data).</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.commitStage">
            <summary>Determines the current stage of the committing process.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetCoordinateSystems(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the specified version of read-only collection of coordinate systems attached to the variable.
            </summary>
            <param name="version">The version of schema to take CoordinateSystems from.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.IsAxis(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the value indicating whether this variable belongs to some coordinate system or not.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.#ctor(Microsoft.Research.Science.Data.DataSet,System.String[],System.Boolean)">
            <summary>
            Initializes an instance of the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.#ctor(Microsoft.Research.Science.Data.DataSet,System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Initialize">
            <summary>
            This method must be called by derived class AT THE END of their constructors.
            </summary>
            <remarks>
            The method initializes the schema of the variable.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.FireEventCoordinateSystemAdded(Microsoft.Research.Science.Data.CoordinateSystem)">
            <summary>
            Fires the CoordinateSystemAdded event.
            </summary>
            <param name="cs"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.FireEventVariableChanged(Microsoft.Research.Science.Data.VariableChangeAction)">
            <summary>
            Fires the Variable.Changed event.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.FireEventVariableCommitting(Microsoft.Research.Science.Data.Variable.Changes,System.Exception@)">
            <summary>
            Returns false if it is required cancel the committing.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.FireEventVariableChanging(Microsoft.Research.Science.Data.VariableChangeAction,Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            Fires the <see cref="E:Microsoft.Research.Science.Data.Variable.Changing"/> event and
            returns false if it is required to cancel changing.
            </summary>
            <param name="proposedChanges"></param>
            <param name="action"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.OnMetadataChanged(System.Object,Microsoft.Research.Science.Data.VariableMetadataChangedEventArgs)">
            <summary>
            The method is invoked when variable's metadata is changed.
            </summary>
            <remarks>
            The method is invoked every time variable's <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/> is changed.
            It starts new transaction (see <see cref="M:Microsoft.Research.Science.Data.Variable.StartChanges"/> method).
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.OnMetadataChanging(System.Object,Microsoft.Research.Science.Data.VariableMetadataChangingEventArgs)">
            <summary>
            The method is invoked before variable's metadata is changed.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetUntypedValue(System.Object[])">
            <summary>Returns the value in specified point in the coordinate system.</summary>
            <remarks>
            Returns the value in specified point in the coordinate system.
            First coordinate system is used as default. 
            Index selection mode is Exact.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetUntypedValue(Microsoft.Research.Science.Data.ReverseIndexSelection,System.Object[])">
            <summary>Returns the value in specified point in the coordinate system.</summary>
            <param name="coords"></param>
            <param name="mode"></param>
            <returns></returns>
            <remarks>
            Returns the value in specified point in the coordinate system.
            First coordinate system is used as default. 
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetUntypedValue(Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])">
            <summary>
            Returns the value in specified point in the coordinate system.
            </summary>
            <param name="cs"></param>
            <param name="coords"></param>
            <returns></returns>
            <remarks>
            Returns the value in specified point in the coordinate system.
            Index selection mode is Exact.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetUntypedValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])">
            <summary>
            Returns the value for the specified point in the coordinate system.
            </summary>
            <param name="mode"></param>
            <param name="cs"></param>
            <param name="coords"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.InnerGetUntypedValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])">
            <summary>
            This method is a bridge to the typed implementation of the method in the <see cref="T:Microsoft.Research.Science.Data.Variable`1"/> class.
            </summary>
            <param name="mode"></param>
            <param name="cs"></param>
            <param name="coords"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[])">
            <summary>
            Gets the data for the variable from specified rectangular region.
            </summary>
            <param name="origin">The origin of the rectangle (left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the rectangle. Null means maximal shape.</param>
            <returns>An array of data from specified rectangle.</returns>
            <remarks>
            <para>
            A variable is not a data storage itself; 
            it is just a representation of an array and its metadata stored in the underlying data storage, 
            and it provides an on-demand access to that storage. 
            This enables work with very large arrays, stored in some format, when a researcher might need 
            only a part of the data in memory.
            </para><para>
            To get a committed shape (i.e. vector of lengths by each dimension) of the underlying array the 
            <see cref="M:Microsoft.Research.Science.Data.Variable.GetShape"/> methods should be used. 
            </para>
            <para>
            The method <see cref="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[])"/> enables retrieving a sub-array of the array. 
            Its parameters specify a rectangle of indices that defines which part of the array 
            should be retrieved. First parameter is an <paramref name="origin"/> of the rectangle, 
            which is an index vector. 
            Second parameter defines <paramref name="shape"/> of the rectangle, 
            which is a vector of lengths of the rectangle by each dimension. 
            Lengths of both <paramref name="origin"/> and <paramref name="shape"/> parameters 
            must be equal to the <see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/> of the variable, 
            i.e. the method doesn’t reduce the dimensionality of an array. </para>
            <para>
            Requested rectangle must be less or equal to the entire shape of a variable (<see cref="M:Microsoft.Research.Science.Data.Variable.GetShape"/>). 
            If the <paramref name="origin"/> is null, it will be considered as a vector of zeros.  
            If the <paramref name="shape"/> is null, the maximum available shape will be used. 
            For instance, <c>GetData(null, null)</c> returns entire array.
            </para>
            <para>
            The GetData methods always get committed data, even if the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has changes.
            </para>
            <para>For scalar variables <paramref name="origin"/> and <paramref name="shape"/> should be 
            either null or has zero length. For scalar variables GetData returns one dimensional array 
            with one item.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[],System.Int32[])">
            <summary>
            Gets the data for the variable from specified stridden slices.
            </summary>
            <param name="origin">The origin of the rectangle (left-bottom corner). Null means all zeros.</param>
            <param name="count">The shape of the rectangle.</param>
            <param name="stride">Steps to stride the variable.</param>
            <returns>An array of data from specified rectangle.</returns>
            <remarks>
            <para>
            Resulting array contains values from the <see cref="T:Microsoft.Research.Science.Data.Variable"/> and has the same <see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/> as the variable does. 
            Shape of the resulting array is equal to <paramref name="count"/>,
            except when the <paramref name="count"/> is null. In this case,
            the real shape of the stridden array is "as much as possible" depending on the shape of the 
            variable (<see cref="M:Microsoft.Research.Science.Data.Variable.GetShape"/>).
            If <paramref name="start"/> is null, an integer array with all zeros is inferred.
            The <paramref name="stride"/> contains a step to stride values of the variable.
            For 1d variables, value of a stridden variable with the index <c>i</c> corresponds
            to the value with index <c>start[0] + i*stride[0]</c> of the variable.
            For multidimensional variables, the principle is similar.
            </para>
            <para>
            See also remarks for <see cref="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[])"/>.
            </para>
            <example>
            <code>
            using (DataSet target = CreateDataSet())
            {
            	/* Preparing the data set */
            	Variable&lt;int&gt; v1d = target.AddVariable&lt;int&gt;("test1d", "x");
            	v1d.PutData(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            	
            	Array arr = v1d.GetData(new int[] { 1 }, new int[] { 2 }, null);
            	
            	Assert.IsTrue(helper_Compare(arr, new int[] { 1, 3, 5, 7, 9 })); // true
            }
            </code>
            </example>
            <para>For scalar variables <paramref name="origin"/>, <paramref name="count"/> and 
            <paramref name="stride"/> should be either null or has zero length. For scalar variables GetData returns one dimensional array 
            with one item.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetStride(System.Array,System.Int32[],System.Int32[])">
            <summary>
            Subsets the array with given strides and count parameters.
            </summary>
            <param name="a"></param>
            <param name="stride"></param>
            <param name="outputCount"></param>
            <returns>An array that is a subset of the source array.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetData">
            <summary>
            Gets the entire data for the variable.
            </summary>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[])"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.PutData(System.Int32[],System.Array)">
             <summary>
             Puts the data to the variable starting with specified origin indices.
             </summary>
             <param name="origin">Indices to start adding of data. Null means all zeros.</param>
             <param name="data">Data to put to the variable.</param>        
             <remarks>
             <para>If a variable is not read-only (see <see cref="P:Microsoft.Research.Science.Data.Variable.IsReadOnly"/>), 
             then data (that is an array of a correct type and rank) 
             can be put into a variable at any time. All dimensions of a variable are unbounded, 
             so it is possible to extend it by any dimension.
             </para>
             <para>
             The <paramref name="data"/> array is copied by the PutData method, therefore after this method call, it is allowed
             to change the array without affecting the data of the variable or proposed changes to commit.
             </para>
             <para>Usually, an SDS provider doesn’t write affected changes into the underlying storage 
                 immediately (but its behavior still depends on a particular implementation). 
                 To perform it, after all planned actions with the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> are completed, commit 
                 changes as described in remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>.
             </para>
             <para>Important: all arrays as parameters in the PutData methods must have a rank equal 
             to the variable’s rank (see <see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/>).
             </para>
             <para>The method <see cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Array)"/> of the <see cref="T:Microsoft.Research.Science.Data.Variable"/> allows putting an array into variable 
             starting with zero indices.
             </para>
             <para>
             Another method <see cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Int32[],System.Array)"/> puts data into a rectangle 
             defined by a shape of a given array and 
             an <paramref name="origin"/> parameter, which is an index vector of the starting 
             corner of the rectangle to place data in.
             </para>
             <para>If the variable was not empty, then overlapping values are replaced 
             by values from the proposed array. If new array is larger than existing, 
             variable’s shape is extended. In this case, 
             there can be areas those are not overlapped by both existing data and proposed.</para>
             <para>
             Append methods allow appending an array to existing data. See more in remarks for
             <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.String)"></see>.
             </para>
             <para>For scalar variables <paramref name="origin"/> should be either null or has zero length. 
             Array <paramref name="data"/> should be one dimensional array containing one item.</para>
             </remarks>
             <example>
             <code>
            void DemoAppendPut(DataSet sds)
            {
             Variable&lt;int&gt; var = sds.AddVariable&lt;int&gt;("demoVar", 1);
             // var contains an empty array at the moment
            
             var.PutData(new int[] { 1, 2, 3 } );
             // var contains: 1, 2, 3
            
             var.PutData(new int[] { 4 }, new int[] { 3, 2, 1 });
             // var contains: 1, 2, 3, 0, 3, 2, 1
            
             var.PutData(new int[] { 3 }, new int[] { -1 });
             // var contains: 1, 2, 3, -1, 3, 2, 1
            
             var.Append(new int[] { 0, 0, 0 });
             // var contains: 1, 2, 3, -1, 3, 2, 1, 0, 0, 0
            }
            </code>
            <para>
            Don’t forget either commit changes to make them actual or enable autocommit
            (see <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/>).
            </para>
             </example>
             <seealso cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.String)"/> 
             <seealso cref="M:Microsoft.Research.Science.Data.Variable.GetData(System.Int32[],System.Int32[])"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.String[])"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>
             <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
             <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
             <exception cref="T:System.ArgumentNullException"><paramref name="data"/> is null.</exception>
             <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
             <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.PutData(System.Array)">
            <summary>
            Puts the data to the variable starting with zero indices.
            </summary>
            <param name="a">Data to add to the variable.</param>
            <remarks>See remarks for <see cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Int32[],System.Array)"></see>.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Append(System.Array)">
            <summary>
            Appends the data to the variable by first dimension.
            </summary>
            <param name="a">Data to append to the variable.</param>
            <remarks>See remarks for <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.String)"></see>.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.String)">
            <summary>
            Appends the data to the variable by specified dimension.
            </summary>
            <param name="a">Data to append to the variable.</param>
            <param name="dimToAppend">Recent name of the dimension to append by.</param>
            <remarks>
            <para>
            Append methods allow appending an array to existing data. The simplest version of the method
            <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array)"/> accepts only an array and appends 
            a variable by its first dimension (i.e. a dimension with index 0).
            </para>
            <para>
            The other Append methods allow to specify either index of a dimension to append by or 
            its name (if dimensions names have been explicitly specified on a definition of the variable, 
            see remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.String[])"/>).
            </para>
            <para>
            All changes becomes actual only after committing (<see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>).
            </para>
            <para>
            The <paramref name="a"/> array is copied by the method, therefore after this method call, it is allowed
            to change the array without affecting the data of the variable or proposed changes to commit.
            </para>
            <para>
            Note that an array <paramref name="a"/> may have the same rank as the variable does or
            rank of <paramref name="a"/> may be one less than variable.
            So if you need to append a single slice to a variable, 
            it can be presented as an array of rank <see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/> or
            as an array of rank <see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/> minus one.
            <code>
            // 1 4     7
            // 2 5  +  8 :
            // 3 6     9
            Variable&lt;int&gt; v = dataSet.AddVariable&lt;int&gt;("v", "1", "2");
            v.PutData(new int[2,3] { {1,2,3}, {4,5,6} });
            v.Append(new int[1,3] { { 7, 8, 9 } }); // OK
            v.Append(new int[3] { 7, 8, 9 }); // OK
            </code>
            </para>
            </remarks>
            <example>
            See the example for <see cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Int32[],System.Array)"/>.
            </example>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable.PutData(System.Int32[],System.Array)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.Int32)">
            <summary>
            Appends the data to the variable by specified dimension.
            </summary>
            <param name="a">Data to append to the variable. Rank of this array should be equal or be one less than
            rank of the variable</param>
            <param name="dimToAppend">Zero-based index of the dimension to append by.</param>
            <remarks>See remarks for <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array,System.Int32)"></see>.</remarks>
            <exception cref="T:System.ArgumentNullException"/>
            <exception cref="T:System.ArgumentException"/>
            <exception cref="T:System.ArgumentOutOfRangeException"/>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.SetCompleteReadOnly">
            <summary>
            Sets the read only flag.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CheckOnAddCoordinateSystem(Microsoft.Research.Science.Data.CoordinateSystem)">
            <summary>
            This methods is called when the coordinate system is to be added to the variable.
            </summary>
            <remarks>
            It is possible to override this method to filter out coordinate systems, and
            it is enough to throw an exception to reject the coordinate system.
            Default implementation prohibits add of non-native coordinate systems.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.AddCoordinateSystem(Microsoft.Research.Science.Data.CoordinateSystem)">
            <summary>
            Adds the coordinate system to the list of coordinate systems corresponded with the variable.		
            </summary>
            <param name="cs">A coordinate system of the same DataSet.</param>
            <remarks>
            <para>
            Coordinate system must be attached to the same data set as the variable does.
            </para>
            <para>
            Adding of a coordinate system to a variable
            means that the variable is defined in that coordinate system. 
            See also remarks for 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.CreateCoordinateSystem(System.String,Microsoft.Research.Science.Data.Variable[])"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ReadShape">
            <summary>
            Returns the actual shape of the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetShape">
            <summary>
            Gets the shape of the variable.
            </summary>
            <remarks>
            <para>Shape of the variable is the array of number of elements in each dimension.</para>
            <para>The method returns the committed shape of the variable.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable.GetShape(Microsoft.Research.Science.Data.SchemaVersion)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetShape(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Computes and returns the specific version of a shape for the variable.
            </summary>
            <remarks>
            <para>Shape of the variable is the array of number of elements in each dimension.</para>
            <para>The method returns the shape of the variable for the given schema version.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable.GetShape"/>
            <seealso cref="T:Microsoft.Research.Science.Data.SchemaVersion"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetDimensions(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the dimension list of the variable for the specified schema version.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Rollback">
            <summary>
            Rolls back variable changes.
            </summary>
            <remarks>
            Rolls back changes for this variable. <see cref="T:Microsoft.Research.Science.Data.DataSet"/> remains modified.
            See also <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/>.
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.Variable.HasChanges"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.DoCheckConstraints(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Makes checks of internal constraints.
            </summary>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CheckCoordinateSystems(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Set of dimensions for each CS must be equal to the set of dimensions for the variable.
            </summary>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/>		
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CheckConstraints(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            If the variable needs for some extra checks before committing this method must be overriden.
            </summary>
            <remarks>
            It shall throw an exception in case of a check failure.
            </remarks>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"></exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.OnPrecommit(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            The method is called at the precommit stage of the variable. 
            </summary>
            <remarks>
            At Precommit stage it is required to change the state.
            Override it if you want to perform precommit stage for the variable on your own way in addition to basic.
            On errors an exception should be thrown.
            </remarks>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"></exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.OnCommit(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            The method is called at the commit stage of the variable.
            </summary>
            <remarks>
            At Commit stage it is required to commit the change of state.
            Override it if you want to perform commit stage for the data set on your own way in addition to basic.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Undo">
            <summary>
            The method is called when the precommit fails. Providers can cancel possible preparations for committed.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.OnRollback(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            The method is called at the the rollback stage of the variable.
            </summary>
            <remarks>
            At Rollback stage it is required to rollback the change of state.
            Override it if you want to perform rollback stage for the data set on your own way in addition to basic.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CheckChangeset(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>Checks constraints for the given changeset.</summary>
            <remarks>
            Checks all constraints related to variable for given changeset and returns
            true if all of them are satisfied. No events are thrown during the process.
            </remarks>
            <param name="changeset"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.PrecommitLocalChanges">
            <summary>
            Uses data set's local changes to checks constraints.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Precommit(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Checks both internal and external constraints and, if successful,
            changes the state of the variable in accordance with requests (including data writing).
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.FinalCommit(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            This method is called after all variables has changed their state successfully and
            commits the state of the variable, so it cannot be rolled back any more.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ApplyChanges(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Applies given changeset to the variable.
            </summary>
            <param name="datasetChanges"></param>
            <remarks>
            The process includes both precommit and final commit stages.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.StartChanges">
            <summary>
            Initiates new change transaction (if it isn't started yet).
            </summary>
            <remarks>
            This concerns changeset accumulated within the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetChanges">
            <summary>
            Gets a copy of the Variable that contains all changes made to it since last committing.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetInnerChanges">
            <summary>
            Gets the inner representation of changes made to the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetSchema">
            <summary>
            Gets the variable schema.
            </summary>
            <remarks>
            <para>The <see cref="T:Microsoft.Research.Science.Data.VariableSchema"/> describes the structure of the <see cref="T:Microsoft.Research.Science.Data.Variable"/>.</para>
            <para>The method returns the committed version of the schema. 
            Read more about version in remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/>.
            To get a custom version of the schema, use <see cref="M:Microsoft.Research.Science.Data.Variable.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/>.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets specified version of the variable schema.
            </summary>
            <param name="version">Version of the schema to return.</param>
            <remarks>
            <para>The <see cref="T:Microsoft.Research.Science.Data.VariableSchema"/> describes the structure of the <see cref="T:Microsoft.Research.Science.Data.Variable"/>.</para>
            <para>The method returns the specified <paramref name="version"/> of the schema. 
            Read more about version in remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable.GetSchema"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CaptureCommittedSchema">
            <summary>
            Builds committed schema for the data set and saves it in the
            field committedSchema.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ResetCommitStage">
            <summary>
            Resets the commit stage to "Committed".
            It makes it possible to restart committing process for the variable anew.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ClearChanges">
            <summary>
            Clears all variable changes.
            </summary>
            <remarks>
            The metohod makes <see cref="P:Microsoft.Research.Science.Data.Variable.HasChanges"/> equal to false.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ChangesUpdateShape(Microsoft.Research.Science.Data.Variable.Changes,System.Int32[])">
            <summary>
            Enables provider implementation to update a shape within changes instance.
            </summary>
            <param name="changes">Existing changes.</param>
            <param name="shape">New shape.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ChangesUpdateMetadataChanges(Microsoft.Research.Science.Data.Variable.Changes,Microsoft.Research.Science.Data.MetadataDictionary)">
            <summary>
            Enables provider implementation to update a metadata changes within changes instance.
            </summary>
            <param name="changes">Existing changes.</param>
            <param name="metadataChanges">New metadata changes dictionary.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ChangesUpdateAffectedRect(Microsoft.Research.Science.Data.Variable.Changes,Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            Enables provider implementation to update the affected rectangle within changes instance.
            </summary>
            <param name="changes">Existing changes.</param>
            <param name="affectedRect">New affected rectangle.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ToString">
            <summary>
            Represents the <see cref="T:Microsoft.Research.Science.Data.Variable"/> as a string.
            </summary>
            <remarks>
            <para>
            See remarks for the <see cref="M:Microsoft.Research.Science.Data.DataSet.ToString"/> method.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.ToString(System.String)">
            <summary>
            Produces a string with given prefix.
            </summary>
            <param name="prefix"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.GetHashCode">
            <summary>
            Returns the hash code for this instance.
            </summary>
            <returns>The hash code for this instance.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Finalize">
            <summary>
            Finalizes the instance.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Dispose">
            <summary>
            Disposes the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Dispose(System.Boolean)">
            <summary>
            Releases the unmanaged resources used by the <see cref="T:Microsoft.Research.Science.Data.Variable"/> and optionally releases the managed resources.
            </summary>
            <param name="disposing">true to release both managed and unmanaged resources; false to release only unmanaged resources.</param>
            <remarks>
            <para>This method is called by the public Dispose method and the Finalize method. 
            Dispose invokes the protected Dispose method with the disposing parameter set to true. 
            Finalize invokes Dispose with disposing set to false.
            </para>
            <para>Notes to Inheritors
            </para>
            <para>Dispose can be called multiple times by other objects. 
            When overriding Dispose, be careful not to reference objects that have been previously disposed of in an earlier call to Dispose.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.CreateMetadata">
            <summary>
            Creates metadata collection via the default constructor.
            </summary>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>.</returns>
            <remarks><see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> has internal constructor therefore
            this method should be used by derived classes to create the metadata dictionary.</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.DataSet">
            <summary>
            Gets the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance the <see cref="T:Microsoft.Research.Science.Data.Variable"/> belongs to.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.TypeOfData">
            <summary>
            Gets the data type for the <see cref="T:Microsoft.Research.Science.Data.Variable"/>.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Name">
            <summary>
            Gets the committed name or sets the new name of the <see cref="T:Microsoft.Research.Science.Data.Variable"/>.
            </summary>
            <remarks>
            <para>
            Name of a variable is a custom string (possibly, empty).
            </para>
            <para>Changing the property changes the proposed version of the name of the variable.
            If the variable has just been added to a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, there is only a proposed 
            version of the name, therefore it will be updated.</para>
            <para>The method never throws an exception. If the variable has no name, it returns empty string.</para>
            </remarks>	
            <seealso cref="P:Microsoft.Research.Science.Data.Variable.ProposedName"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.ProposedName">
            <summary>
            Gets the proposed name if it exists. If not, gets the committed name.
            </summary>
            <see cref="P:Microsoft.Research.Science.Data.Variable.Name"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Version">
            <summary>
            Gets the current version number of the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Rank">
            <summary>
            Gets the rank of the variable.
            </summary>
            <remarks>
            Returns non-negative value. Zero means scalar variable.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Dimensions">
            <summary>
            Gets the dimensions list of the <see cref="T:Microsoft.Research.Science.Data.Variable"/>.
            </summary>
            <remarks>
            <para>The property returns committed dimensions.
            To get proposed dimensions, use <see cref="M:Microsoft.Research.Science.Data.Variable.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/> method.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Metadata">
            <summary>
            Gets the metadata associated with the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.CoordinateSystems">
            <summary>
            Gets the read-only collection of coordinate systems attached to the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.ID">
            <summary>
            Gets the ID of the variable.
            </summary>
            <remarks>
            It is guaranteed that (1) the ID is unique within the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and
            (2) it is constant for each variable during life time of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>. 
            Since a variable might be renamed, the ID should be used for indexing instead of the name
            to be confident of correct identification of a variable.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.IsReadOnly">
            <summary>
            Gets the value indicating whether the variable is read-only.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.ReadOnly">
            <summary>
            Gets the value indicating whether the variable is read-only.
            </summary>
            <remarks>
            <para>
            The property is obsolete. Use the propery <see cref="P:Microsoft.Research.Science.Data.Variable.IsReadOnly"/> instead.
            </para>
            </remarks>
        </member>
        <member name="E:Microsoft.Research.Science.Data.Variable.CoordinateSystemAdded">
            <summary>
            Occurs when a coordinate system has been added to the variable.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.Variable.RolledBack">
            <summary>
            Occurs when the variable is rolled back.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.Variable.Changed">
            <summary>
            Occurs on every change of the variable (i.e. a change in the *proposed* schema, not *committed*).
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.Variable.Committing">
            <summary>
            Occurs when the variable is committing.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.Variable.Committed">
            <summary>
            Occurs when the variable has been committed successully.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.Variable.Changing">
            <summary>
            Occurs when the variable is changing.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.MissingValue">
            <summary>
            Gets or sets a value to be considered as a missing value for the variable's data.
            </summary>
            <remarks>
            <para>Type of the value must be same as the vatiable's <see cref="P:Microsoft.Research.Science.Data.Variable.TypeOfData"/>.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.HasChanges">
            <summary>
            Gets the value indicating whether the variable is modified.
            </summary>
            <remarks>
            The <see cref="T:Microsoft.Research.Science.Data.Variable"/> is modified, if a user changed its metadata or data.
            If a variable becomes modified, all <see cref="T:Microsoft.Research.Science.Data.DataSet"/> becomes modified, too
            (see <see cref="P:Microsoft.Research.Science.Data.DataSet.HasChanges"/>).
            To commit changes, use <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method.
            To roll changes back, use <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/> method.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.DefaultIndices">
            <summary>
            Gets the default indices array that doesn't depend on a variable's rank.
            </summary>
            <remarks>
            The property always returns null. 
            This value that can be used as an origin in put/get data operation with scalar variables;
            also, if used as an origin in all PutData operations, it means "all zeros" array.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Variable.Changes">
            <summary>
            Represents changes in the variable schema.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.Changes.changeSet">
            <summary>
            Version of the changeset.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.Changes.id">
            <summary>
            Variable id.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.Changes.metadataChanges">
            <summary>
            Changed/added attributes.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.Changes.coordinateSystems">
            <summary>
            Proposed coordinate systems list.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.Changes.shape">
            <summary>
            Proposed shape of the variable.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.Changes.affectedRectangle">
            <summary>
            Rectangle affected by data changes.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.Changes.initialSchema">
            <summary>
            Committed schema that is being changed.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Changes.#ctor(System.Int32,Microsoft.Research.Science.Data.VariableSchema,Microsoft.Research.Science.Data.MetadataDictionary,Microsoft.Research.Science.Data.CoordinateSystemCollection,System.Int32[],Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            
            </summary>
            <param name="version"></param>
            <param name="initialSchema"></param>
            <param name="metadataChanges"></param>
            <param name="css"></param>
            <param name="shape"></param>
            <param name="affectedRect"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Changes.GetDimensionList">
            <summary>
            Builds and returns the read only dimension list using
            its fields with dimensions names and proposed shape.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.Changes.Clone">
            <summary>Clones all changes.</summary>
            <returns>Exact copy of changes.</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.ChangeSet">
            <summary>
            Gets the new version number.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.ID">
            <summary>
            Gets the ID of the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.MetadataChanges">
            <summary>
            Gets added and updated metadata attributes.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.CoordinateSystems">
            <summary>Gets collection of added coordinate systems.</summary>
            <remarks>This collection may contain added coordinate systems only,
            because a coordinate system is immutable after it is committed.</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.Shape">
            <summary>
            Gets the new shape of the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.AffectedRectangle">
            <summary>
            Gets the rectangle in the index space where data is changed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.InitialSchema">
            <summary>
            Gets the schema of the previous version.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.Changes.ChangeType">
            <summary>
            Gets the value describing what is changed in the variable.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Variable.DataChanges">
            <summary>
            Represents changes both in schema and data for the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.DataChanges.#ctor(System.Int32,Microsoft.Research.Science.Data.VariableSchema,Microsoft.Research.Science.Data.MetadataDictionary,Microsoft.Research.Science.Data.CoordinateSystemCollection,System.Int32[],Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            
            </summary>
            <param name="version"></param>
            <param name="initialSchema"></param>
            <param name="metadataChanges"></param>
            <param name="css"></param>
            <param name="shape"></param>
            <param name="affectedRect"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.DataChanges.#ctor(System.Int32,Microsoft.Research.Science.Data.VariableSchema,Microsoft.Research.Science.Data.MetadataDictionary,Microsoft.Research.Science.Data.CoordinateSystemCollection,System.Int32[],Microsoft.Research.Science.Data.Rectangle,System.Collections.Generic.List{Microsoft.Research.Science.Data.Variable.DataPiece})">
            <summary>
            
            </summary>
            <param name="version"></param>
            <param name="initialSchema"></param>
            <param name="metadataChanges"></param>
            <param name="css"></param>
            <param name="shape"></param>
            <param name="affectedRect"></param>
            <param name="data"></param>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.DataChanges.dataPieces">
            <summary>Contains proposed data arrays put with PutData or AppendData methods.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.DataChanges.Clone">
            <summary>Clones all changes.</summary>
            <returns>Exact copy of changes.</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.DataChanges.Data">
            <summary>
            Gets the list of proposed data pieces.
            </summary>
            <remarks>
            Contains proposed data arrays put with PutData or AppendData methods.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable.DataChanges.HasData">
            <summary>
            Gets the value indicating whether the changeset has proposed data or not.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Variable.ChangeTypes">
            <summary>
            Describes what is actually changed in a variable.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.ChangeTypes.None">
            <summary>No changes.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.ChangeTypes.DataUpdated">
            <summary>Data of a variable is updated.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.ChangeTypes.MetadataUpdated">
            <summary>Metadata of a variable is updated.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Variable.DataPiece">
            <summary>
            Represents an array that is a subarray of an entire array, arbitrary positioned.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.DataPiece.Origin">
            <summary>
            Origin is the indices to put the data.
            </summary>
            <remarks>
            Append operations prodices pieces containing all zeros except one element,
            which is -1.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable.DataPiece.Data">
            <summary>
            Data to put.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.DataPiece.UpdateAppendedOrigin(System.Int32[],System.Int32[])">
            <summary>
            Fills the origin with real values if it is a part of append procedure.
            </summary>
            <param name="origin"></param>
            <param name="shape">Real shape of the data.</param>
            <exception cref="T:System.ArgumentException">Origin is a part of append but is incorrect.</exception>
            <returns>Updated origin</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable.DataPiece.UpdateAppendedOrigin(System.Int32[],System.Func{System.Int32,System.Int32})">
            <summary>
            Fills the origin with real values if it is a part of append procedure.
            </summary>
            <param name="origin"></param>
            <param name="shape">Real shape of the data: returns length for given dimension.</param>
            <exception cref="T:System.ArgumentException">Origin is a part of append but is incorrect.</exception>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable`1.committedOrder">
            <summary>
            The current order of the data (this allows not to check all data from a storage each time and cache the result).
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Variable`1.proposedOrder">
            <summary>
            The current order of the proposed data (this allows not to check all data from a storage each time and cache the result).
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.OnVariableChanged(System.Object,Microsoft.Research.Science.Data.VariableChangedEventArgs)">
            <summary>
            Resets proposedOrder on put data
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.IndicesOf(System.Object)">
            <summary>
            Returns indices of the variable's element corresponding to the given value.
            </summary>
            <param name="value">The value which index is to be returned.</param>
            <returns>If the value is not found and it is less than one or more elements in array, 
            a negative number which is the bitwise complement of the index of the first element 
            that is larger than value. If value is not found and value is greater than 
            any of the elements in array, a negative number which is the bitwise complement of 
            (the index of the last element plus 1).</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.Variable`1.IndicesOf(`0)"/>.
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable`1.GetValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.IndicesOf(`0)">
            <summary>
            Returns indices of the variable's element corresponding to the given value.
            </summary>
            <param name="value">The value which index is to be returned.</param>
            <returns>If the value is not found and it is less than one or more elements in array, 
            a negative number which is the bitwise complement of the index of the first element 
            that is larger than value. If value is not found and value is greater than 
            any of the elements in array, a negative number which is the bitwise complement of 
            (the index of the last element plus 1).</returns>
            <remarks>
            <para>
            The method accepts a value and returns the corresponding indices vector of the element 
            containing the given value. 
            Please note that the method works with the committed data only. </para>
            <para>
            If the value is not found and it is less than one or more elements in array, 
            a negative number which is the bitwise complement of the index of the first 
            element that is larger than value. If value is not found and value is greater 
            than any of the elements in array, a negative number which is the bitwise complement of 
            (the index of the last element plus 1). </para>
            <para>
            The method is used in <see cref="M:Microsoft.Research.Science.Data.Variable`1.GetValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])"/>
            methods of the <see cref="T:Microsoft.Research.Science.Data.Variable`1"/> retrieving a value by given coordinate values.  
            The method is implemented for 1d-variables only and for any other rank it throws the 
            <see cref="T:System.NotSupportedException"/>. The method uses the order of an array computed by the
            <see cref="M:Microsoft.Research.Science.Data.Variable`1.CheckReversibility(Microsoft.Research.Science.Data.Variable.Changes)"/> method during the constraints check.</para>
            <para>
            Each index in the returned array corresponds to the dimension with the same index
            from the collection <see cref="P:Microsoft.Research.Science.Data.Variable.Dimensions"/>.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable`1.GetValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.CheckReversibility(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            Checks whether the variable is reversible.
            </summary>
            <param name="changes">Changes to be applied to the variable.</param>
            <returns>Returns true if the variable is reversible.</returns>
            <remarks>
            The method makes actual check for 1d variables only. 
            For any other rank it just returns true without the check.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.GetOrder1d(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            <para>Gets the order of the variable (works for 1d variables only).</para>
            <para>Affects committedOrder and proposedOrder fields.</para>
            <para>Returns Ascendant, Descendant, Unknown or None.</para>
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.IndexOfDataPieceContaining(Microsoft.Research.Science.Data.Variable.DataChanges,System.Int32)">
            <summary>
            Gets the index of the data piece containg specified index or -1.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String[],System.Boolean)">
            <summary>
            Initializes an instance of the variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.Initialize">
            <summary>
            Initializes the schema of the variable.
            </summary>
            <remarks>
            This method shall be called by derived class AT THE END of their constructors.
            It initializes the schema of the variable.
            Start changes of the variable.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.InnerGetUntypedValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])">
            <summary>
            This method is a bridge to the typed implementation of the method in the Variable{DataType} class.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.GetValue(System.Object[])">
            <summary>
            Returns the typed value in specified point in the coordinate system.
            </summary>
            <remarks>
            First coordinate system is used as default. 
            Index selection mode is Exact.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.GetValue(Microsoft.Research.Science.Data.ReverseIndexSelection,System.Object[])">
            <summary>
            Returns the typed value in specified point in the coordinate system.
            </summary>
            <remarks>
            First coordinate system is used as default. 
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.GetValue(Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])">
            <summary>
            Returns the typed value in specified point in the coordinate system.
            </summary>
            <remarks>
            First coordinate system is used as default. 
            Index selection mode is Exact.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.GetValue(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.CoordinateSystem,System.Object[])">
            <summary>
            Returns the typed value in specified point in the coordinate system.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.GetIndex1d(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.Variable,System.Object)">
            <summary>
            Returns index (or two nearest indices) in the given axis for specified coordinate value.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.GetValue1d(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.Variable,System.Object)">
            <summary>
            Returns value in the given axis for specified coordinate value.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Variable`1.Append(`0)">
            <summary>
            For one dimensional variables appends a single value.
            </summary>
            <param name="value">A value to append.</param>
            <seealso cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array)"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable`1.TypeOfData">
            <summary>
            Gets the data type for the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Variable`1.Item(System.Int32[])">
            <summary>
            Gets or sets single value.
            </summary>
            <param name="indices">Indices of a postion to get or set value</param>
            <returns>Single variable value</returns>
            <remarks>No input out optimization is done when getting/setting single values of a variable.
            In general, it is more efficient to get values in arrays using GetData overloads.</remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Variable`1.GetValueIndex">
            <summary>
            Stores a pair of indices and interpolation coefficient.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String[],System.Boolean)">
            <summary>
            Initializes a DataAccessVariable.
            </summary>
            <param name="dataSet">The owner of the variable.</param>
            <param name="dims">Dimensions of the variable.</param>
            <param name="assignID">Assign ID automatically or not.</param>
            <remarks>
            Method creates metadata collection.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[])">
            <summary>
            Initializes a DataAccessVariable.
            </summary>
            <param name="dataSet">The owner of the variable.</param>
            <param name="name">Name of the variable.</param>
            <param name="dims">Dimensions of the variable.</param>
            <remarks>
            Method creates metadata collection and initializes the Name.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[],System.Boolean)">
            <summary>
            Initializes a DataAccessVariable.
            </summary>
            <param name="dataSet">The owner of the variable.</param>
            <param name="name">Name of the variable.</param>
            <param name="dims">Dimensions of the variable.</param>
            <param name="assignID">Assign ID automatically or not.</param>
            <remarks>
            Method creates metadata collection and initializes the Name.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.OnPrecommit(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            The method is called at the precommit stage of the variable. 
            </summary>
            <remarks>
            <see cref="T:Microsoft.Research.Science.Data.DataAccessVariable`1"/> opens a write-transaction and actually updates the related storage with
            accumulated changes.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.OnCommit(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            The method is called at the commit stage of the variable. 
            </summary>
            <remarks>
            <see cref="T:Microsoft.Research.Science.Data.DataAccessVariable`1"/>
            closes a write-transaction thus confirming its success.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.OnRollback(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            The method is called at the rollback stage of the variable.
            </summary>
            <remarks>
            <see cref="T:Microsoft.Research.Science.Data.DataAccessVariable`1"/> rolls an open transaction back, thus eliminating all changes since last successful committing.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.BeginWriteTransaction(Microsoft.Research.Science.Data.Variable.DataChanges)">
            <summary>
            Opens new write-transaction and thus prepares to a sequence of <see cref="M:Microsoft.Research.Science.Data.DataAccessVariable`1.WriteData(System.Int32[],System.Array)"/>.
            </summary>
            <remarks>
            If the variable can support write-transactions it shall override this method.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.OnWriteFinished(Microsoft.Research.Science.Data.Variable.DataChanges)">
            <summary>
            The methods is called right after all data in transaction is written with <see cref="M:Microsoft.Research.Science.Data.DataAccessVariable`1.WriteData(System.Int32[],System.Array)"/>
            and before the call of Commit().
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.CommitWrite(Microsoft.Research.Science.Data.Variable.DataChanges)">
            <summary>
            Commits a sequence of write-operations performed as a part of a transaction.
            </summary>
            <remarks>
            If the variable can support write-transactions it shall override this method.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.RollbackWrite">
            <summary>
            Rolls back a sequence of write-operations performed as a part of a transaction.
            </summary>
            <remarks>
            If the variable can support write-transactions it shall override this method.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.ReadData(System.Int32[],System.Int32[])">
            <summary>
            Actually reads the data from the variable's underlying storage.
            </summary>
            <param name="origin">The origin of the rectangle (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the corned. Null means maximal possible shape.</param>
            <returns>An array of data from the specified rectangle.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.ReadData(System.Int32[],System.Int32[],System.Int32[])">
            <summary>
            Actually reads the data from the variable's underlying storage.
            </summary>
            <param name="origin">The origin of the rectangle (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="stride">The steps to get slices from the array.</param>
            <param name="count">The shape of the corned. Null means maximal possible shape.</param>
            <returns>An array of data from the specified rectangle.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.WriteData(System.Int32[],System.Array)">
            <summary>
            Writes the data to the variable's underlying storage starting with the specified origin indices.
            </summary>
            <remarks>
            <para>
            Each operation is a part of a transaction, opened with the <see cref="M:Microsoft.Research.Science.Data.DataAccessVariable`1.BeginWriteTransaction(Microsoft.Research.Science.Data.Variable.DataChanges)"/> method.
            *It is called in the precommit stage*
            </para>
            <para>A sequence of such outputs with same transaction can be either committed by <see cref="M:Microsoft.Research.Science.Data.DataAccessVariable`1.CommitWrite(Microsoft.Research.Science.Data.Variable.DataChanges)"/> or
            rolled back by <see cref="M:Microsoft.Research.Science.Data.DataAccessVariable`1.RollbackWrite"/>.</para>
            <para>Parameter <paramref name="origin"/> for data piece produced by <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array)"/> operation
            is transformed and contains actual values.</para>
            </remarks>
            <param name="origin">Indices to start adding of data. Null means all zeros.</param>
            <param name="data">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.GetData(System.Int32[],System.Int32[])">
            <summary>
            Gets the data for the variable in specified rectangular region.
            </summary>
            <param name="origin">The origin of the rectangle (left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means maximal shape.</param>
            <returns>An array of data from specified rectangle.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataAccessVariable`1.GetData(System.Int32[],System.Int32[],System.Int32[])">
            <summary>
            Gets the data for the variable from specified stridden slices.
            </summary>
            <param name="origin">The origin of the rectangle (left-bottom corner). Null means all zeros.</param>
            <param name="count">The shape of the result.</param>
            <param name="stride">Steps to stride the variable.</param>
            <returns>An array of data from specified rectangle.</returns>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String)"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataAccessVariable`1.Metadata">
            <summary>
            Gets the metadata associated with the variable.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSet">
             <summary>
             Facilitates creating, reading and modifying of a scientific data set.
             </summary>
             <remarks> 
             <para>The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is a top-level class of the Scientific DataSet library that is aimed to
             provide a single data model for different scientific data sets. 
             Applications are able to store and retrieve data uniformly, having an abstract view on 
             various custom data storages. This makes an application less 
             dependent on data formats and significantly eases data transfer between software components.</para>
             <para>
             The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> bundles several related arrays and associated metadata in 
             a single self-descriptive package and enforces certain constraints on arrays' shapes to 
             ensure data consistency. An underlying data model of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> 
             is based on a long-term community experience. 
             The SDS Data Model has commonality to the Unidata’s Common Data Model, 
             being chosen since CDM has been successfully tested by time. 
             </para>
             <para>To create or open a data set, use <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/> method with a proper 
             DataSet URI:
             <example>
             <code>
             DataSet dataSet = DataSet.Open("csv_for_autotypes.csv"); 
             DataSet dataSet = DataSet.Open("msds:csv?file=csv_for_autotypes.csv"); 
             DataSet dataSet = DataSet.Open(@"c:\data\ncfile.nc"); 
             DataSet dataSet = DataSet.Open("msds:nc?file=ncfile.nc"); 
             DataSet dataSet = DataSet.Open("msds:as?server=(local)&amp;database=ActiveStorage&amp;integrated security=true&amp;GroupName=mm5&amp;UseNetcdfConventions=true");
             </code>
             </example>
             </para>
             <para>
             Particular <see cref="T:Microsoft.Research.Science.Data.DataSet"/> implementation, providing an access to the specified
             data storage, is chosen on a basis of the URI. Such implementation
             named <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider.
             </para>
             <para>
             Current release contains following providers:
             <list type="bullet">
             <item><description>
             <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"></see></description></item>
             <item><description>
             <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"></see></description></item>
             <item><description><see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/></description></item>
             </list>
             </para>
             <para>A provider might have extra parameters specified in the URI. 
             For example, it can be security credentials, behavioral properties etc. 
             For more information see documentation of a particular provider. 
             To customize a URI prior to opening a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, use capabilities
             exposed by the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> class.
             </para>
             <para>
             The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> consists of a collection of <see cref="T:Microsoft.Research.Science.Data.Variable"/> objects.
             Each <see cref="T:Microsoft.Research.Science.Data.Variable"/> represents a single array with a collection of attributes
             (see <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/>) attached.
             If a provider works with large data sets, typically it doesn't loads all data in memory,
             but provides on-demand data access through variables.
             <example>
             The following code iterates through all variables of a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> 
             loaded from "sample.csv" file and prints information about the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> to the console:
             <code>
            using(DataSet ds = new DataSet.Open("sample.csv"))
            {
                 Console.WriteLine ("Scientfic DataSet " + ds.Name + "(" + ds.DataSetGuid + ")" + " contents: ");
            
                 Console.WriteLine (" Variables:");
                 foreach (Variable v in sds.Variables)
                 {
                     Console.WriteLine (v.ToString());
                 }
            }
             </code>
             </example>
             </para>
             <para>
             Relationships between variables are expressed using a concept of shared dimensions. 
             A DataSet dimension is a distinct named index space. 
             For example, saying that variable <c>Observation</c> shares the dimension with variable <c>X</c>
             we mean that <c>Observation[i]</c> relate somehow to <c>X[i]</c> for all indices i 
             from the shared index space. Additionally this introduces a constraint to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>: 
             the lengths of these two variables must always be the same.</para>
             <para>
             In common the rule says that lengths of a shared dimension for all variables, depending on it, must be equal.
             </para>
             <para>In addition to metadata attached to each <see cref="T:Microsoft.Research.Science.Data.Variable"/>, there is a global
             metadata attached to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> (see <see cref="P:Microsoft.Research.Science.Data.DataSet.Metadata"/>).
             Metadata is a dictionary of string keys and typed values, 
             represented as a <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> class.
             </para>
             <para>
             The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance can be read-only (see <see cref="P:Microsoft.Research.Science.Data.DataSet.IsReadOnly"/>). Such
             <see cref="T:Microsoft.Research.Science.Data.DataSet"/> cannot be modified.
             </para>
             <para>
             New <see cref="T:Microsoft.Research.Science.Data.Variable"/> can be added to a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> using 
             <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.String[])"/>.
             <example>
             The following code adds a column to a comma separated text file "Tutorial1.csv":
             <code>
             using(DataSet ds = DataSet.Open("Tutorial1.csv"))
             {
                 // read input data
                 double[] x = (double[])ds["X"].GetData();
                 double[] y = (double[])ds["Observation"].GetData();
                 // compute
                 var xm = x.Sum() / x.Length;
                 var ym = y.Sum() / y.Length;
                 var a = x.Zip(y, (xx, yy) =&gt; (xx - xm) * (yy - ym)).Sum()
                  / x.Select(xx =&gt; (xx - xm) * (xx - xm)).Sum();
                 var b = ym - a * xm;
                 var model = x.Select(xx =&gt; a * xx + b).ToArray();
                 // Adding new variable
                 ds.AddVariable&lt;double&gt;("Model", model);
             }
             </code>
             </example>
             </para>
             <para>
             The extensions <see cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
             enable work with <see cref="T:Microsoft.Research.Science.Data.DataSet"/> in a way close to a procedural API. The previous example
             can be rewritten using the extensions:
             <example>
             <code>
             using(DataSet ds = sds.DataSet.Open("Tutorial1.csv"))
             {
                 // read input data 
                 var x = ds.GetData&lt;double[]&gt;("X");
                 var y = ds.GetData&lt;double[]&gt;("Observation");
                 // compute
                 var xm = x.Sum() / x.Length;
                 var ym = y.Sum() / y.Length;
                 var a = x.Zip(y, (xx, yy) =&gt; (xx - xm) * (yy - ym)).Sum()
                   / x.Select(xx =&gt; (xx - xm) * (xx - xm)).Sum();
                 var b = ym - a * xm;
                 var model = x.Select(xx =&gt; a * xx + b).ToArray();
                 // Adding new variable
                 ds.Add&lt;double[]&gt;("Model");
                 ds.PutData&lt;double[]&gt;("Model", model);
             }
             </code>
             </example>
             </para>
             <para>
             The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> uses two-phase transaction mechanism to commit changes. See remarks for the
             <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method for details. See also remarks for the
             <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/> property. 
             </para>    
             </remarks>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>
             <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
             <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
             <seealso cref="P:Microsoft.Research.Science.Data.DataSet.Metadata"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.String[])"/>
             <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>
             <seealso cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.GlobalMetadataVariableID">
            <summary>
            ID of the variable that contains global metadata of the DataSet.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.TraceDataSet">
            <summary>
            Filters trace messages related to the DataSet.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Create(System.String)">
            <summary>
            Opens connection to a data set for the specified <paramref name="uri"/>.
            </summary>
            <param name="uri">Uri of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> to open.</param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            The method is obsolete. Use <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/> instead.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/> 
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>		
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The provider is not registered.</exception>
            <exception cref="T:System.ArgumentException"></exception>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)">
            <summary>
            Opens connection to a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> for the specified <paramref name="uri"/>.
            </summary>
            <param name="uri">URI of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> to open.</param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>
            The method uses the <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> class
            that enables creating an instance of a particular <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider on a basis of the
            <paramref name="uri"/>. The URI is either a file path (with possible parameters appended
            through '?') or a URI with schema "msds" and correct provider name and set of parameters. 
            See also <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> class.
            <example>
            <para>For example, provider <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> accepts following URIs:</para>
            <code>
            c:\data\test.csv
            c:\data\test.csv?openMode=createNew
            msds:csv?file=c:\data\test.csv&amp;openMode=createNew
            </code>
            <para>The URI "msds:nc?file=c:\data.test.csv" will cause an error for it has wrong provider name ("nc" instead of "csv").</para>
            </example>
            </para>
            <para>
            A provider should have the <see cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/> attribute specifying 
            a provider name. There might also be declared attributes 
            <see cref="T:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute"/> to 
            associate extensions with the provider,
            and <see cref="T:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute"/> to associate a concrete <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            type with the provider (see also <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.String)"/>).
            <example>
            <code>
            [DataSetProviderName("csv")]
            [DataSetProviderFileExtension(".csv")] 
            [DataSetProviderUriTypeAttribute(typeof(CsvUri))]
            public class CsvDataSet : DataSet
            </code>
            </example>
            </para>
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class has property <see cref="P:Microsoft.Research.Science.Data.DataSet.URI"/> returning a URI of a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance. 
            </para>
            <para>For developers: there is a class <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            implementing basic functionality on parsing and 
            verifying DataSet URIs and it should be used to embed the support of URI to 
            DataSet provider.</para>
            <para>
            See also remarks for <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Create(System.String)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/> 
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String,Microsoft.Research.Science.Data.ResourceOpenMode)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>		
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The provider is not registered.</exception>
            <exception cref="T:System.ArgumentException"></exception>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Open(System.String,Microsoft.Research.Science.Data.ResourceOpenMode)">
            <summary>
            Opens connection to a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> for the specified <paramref name="uri"/> with given open mode.
            </summary>
            <param name="uri">URI of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> to open.</param>
            <param name="openMode">The mode to open dataset.</param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/> 
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OpenShared(System.String)">
            <summary>
            Opens a shared connection to a DataSet for a given <paramref name="uri"/>.
            </summary>
            <param name="uri">A file path or a URI string that points to a DataSet storage.</param>
            <returns>An instance of a shared <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>
            The method creates a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> instance and
            hosts a dataset from the <paramref name="uri"/> in it. The returned object is a <see cref="!:ProxyDataSet"/>, attached
            to that storage service.</para>
            <para>
            Note that disposing the resulting <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> doesn't dispose the "shadow" non-shared DataSet. 
            For example, if you use this method to open a NetCDF file, the file will be closed by garbage collector and not by the <see cref="M:Microsoft.Research.Science.Data.DataSet.Dispose"/> method.
            If it is a problem, consider using <see cref="M:Microsoft.Research.Science.Data.DataSet.OpenSharedCopy(System.String)"/> method instead.
            </para>
            <para>
            DataSet must be opened as shared to be passed in <see cref="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.SpawnViewer(Microsoft.Research.Science.Data.DataSet)"/>
            and <see cref="M:Microsoft.Research.Science.Data.DataSetEditorExtensions.SpawnEditor(Microsoft.Research.Science.Data.DataSet)"/> methods.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.OpenSharedCopy(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OpenSharedCopy(System.String)">
            <summary>
            Shares a copy of the dataset from a given <paramref name="uri"/>.
            </summary>
            <param name="uri">A file path or a URI string that points to a DataSet storage.</param>
            <returns>An instance of a shared <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>
            The method creates a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> instance and
            hosts a copy of a dataset from <paramref name="uri"/> in it. The returned object is a <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>, attached
            to that storage service.</para>
            <para>
            DataSet must be opened as shared to be passed in <see cref="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.SpawnViewer(Microsoft.Research.Science.Data.DataSet)"/>
            and <see cref="M:Microsoft.Research.Science.Data.DataSetEditorExtensions.SpawnEditor(Microsoft.Research.Science.Data.DataSet)"/> methods.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Create(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Opens connection to a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> for the specified <paramref name="uri"/>.
            </summary>
            <param name="uri">URI of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> to open.</param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>        
            <remarks>
            The method is obsolete. Use <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/> instead.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/> 
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Opens connection to a data set for the specified <paramref name="uri"/>.
            </summary>
            <param name="uri">URI of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> to open.</param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>        
            <remarks>
            <para>
            The method creates a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance for the specified <paramref name="uri"/>.
            See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/> and <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/> 
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The provider is not registered.</exception>
            <exception cref="T:System.ArgumentException"></exception>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateMetadata">
            <summary>
            Creates <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> instance.
            </summary>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>.</returns>
            <remarks>
            <para>
            Constructor of the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> is internal.
            Therefore providers should use this method to create an instance of the 
            <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.StartChangesFor(Microsoft.Research.Science.Data.MetadataDictionary)">
            <summary>
            Starts changes for the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>.
            </summary>
            <returns>Instance containing changes of the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>.</returns>
            <remarks>
            <para>
            The StartChanges methods of the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> is internal.
            Therefore providers should use <see cref="M:Microsoft.Research.Science.Data.DataSet.StartChangesFor(Microsoft.Research.Science.Data.MetadataDictionary)"/> to start changes for the
            <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateMultipleDataResponse(System.Int32,Microsoft.Research.Science.Data.DataResponse[])">
            <summary>
            Creates <see cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/> instance.
            </summary>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/>.</returns>
            <remarks>
            <para>
            Constructor of the <see cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/> is internal.
            Therefore providers should use this method to create an instance of the 
            <see cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateDataResponse(Microsoft.Research.Science.Data.DataRequest,System.Array)">
            <summary>
            Creates <see cref="T:Microsoft.Research.Science.Data.DataResponse"/> instance.
            </summary>
            <param name="data"></param>
            <param name="request"></param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataResponse"/>.</returns>
            <remarks>
            <para>
            Constructor of the <see cref="T:Microsoft.Research.Science.Data.DataResponse"/> is internal.
            Therefore providers should use this method to create an instance of the 
            <see cref="T:Microsoft.Research.Science.Data.DataResponse"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetType(System.String)">
            <summary>
            Gets the <see cref="T:System.Type"/> with the specified name, performing a case-sensitive search.
            </summary>
            <param name="typeName">The assembly-qualified name of the type to get. If the type is in the core <see cref="T:Microsoft.Research.Science.Data.DataSet"/> assembly or in Mscorlib.dll, it is sufficient to supply the type name qualified by its namespace.</param>
            <returns>The <see cref="T:System.Type"/> with the specified name, if found; otherwise, a null reference.</returns>
            <remarks>This method is equivalent to <see cref="M:System.Type.GetType(string)"/> except when assembly is not specified in <paramref name="typeName"/>. In that case it searches the type in the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> assembly, not in the calling assembly.</remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.changeSetId">
            <summary>Unique number of committed changeset (version). 
            Changeset ids can be compared. Greater changeset id
            means more recent changeset</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.autocommit">
            <summary>If autocommit is true, tries to commit after every change.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.uri">
            <summary>
            URI of the DataSet.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.readOnly">
            <summary>
            Determines whether data set is read only.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.variables">
            <summary>Committed collection of variables.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.changes">
            <summary>Represents recent changes in data set.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.commitedDimensions">
            <summary>List of current committed dimensions.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.includedDataSets">
            <summary>Other data sets that were referenced in uri.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.incomingReferences">
            <summary>List of data sets referring this data set.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.outcomingReferences">
            <summary>List of data sets referred by this data set.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.#ctor">
            <summary>
            Creates an instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            <para>
            Initializes the instance's collections of variables and coordinate systems
            and starts changes (see <see cref="M:Microsoft.Research.Science.Data.DataSet.StartChanges"></see>).
            </para>
            <para>
            Initializes the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance with coordinate systems support enabled
            and generic global metadata variable. See also <see cref="M:Microsoft.Research.Science.Data.DataSet.#ctor(System.Boolean,System.Boolean)"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.#ctor(System.Boolean,System.Boolean)">
            <summary>
            Creates an instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <param name="createGlobalMetadataVariable">Determines whether to create a generic global metadata variable
            or not.</param>
            <param name="supportsCoordinateSystems">If true, the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider supports coordinate systems; otherwise, it doesn't.</param>
            <remarks>
            <para>
            Initializes the instance's collections of variables and coordinate systems
            and starts changes (see <see cref="M:Microsoft.Research.Science.Data.DataSet.StartChanges"></see>).
            </para>
            <para>
            If <paramref name="createGlobalMetadataVariable"/> is <c>true</c>, 
            an isntance of the <see cref="T:Microsoft.Research.Science.Data.MetadataContainerVariable"/> with <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/>
            equal to <see cref="F:Microsoft.Research.Science.Data.DataSet.GlobalMetadataVariableID"/> is created to store global metadata of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            Otherwise, the provider must add (<see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableToCollection(Microsoft.Research.Science.Data.Variable)"/>) a custom variable with 
            <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> == <see cref="F:Microsoft.Research.Science.Data.DataSet.GlobalMetadataVariableID"/>
            on its own. Read about global metadata in remarks for <see cref="P:Microsoft.Research.Science.Data.DataSet.Metadata"/> property.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OnDataSetChanged(Microsoft.Research.Science.Data.DataSetChangeAction,Microsoft.Research.Science.Data.DataSet.Changes,System.Object)">
            <summary>
            Invoked when something has changed within the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <param name="action"></param>
            <param name="changes"></param>
            <param name="target"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.FireEventChanged(Microsoft.Research.Science.Data.DataSetChangeAction,Microsoft.Research.Science.Data.DataSet.Changes,System.Object)">
            <summary>
            Fires the Changed event.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.FireEventCommitting(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Returns false if it is required cancel the committing.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.committedHandlers">
            <summary>
            Private event Committed handlers.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.FireEventCommitted(Microsoft.Research.Science.Data.DataSetChangeset,Microsoft.Research.Science.Data.DataSetSchema)">
            <summary>
            Fires the <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event.
            </summary>
            <param name="changes">Committed changes.</param>
            <param name="committedSchema">Committed schema.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.FireEventChanging(Microsoft.Research.Science.Data.DataSetChangeAction,System.Object)">
            <summary>
            Fires the Changing event and
            returns false, if changing is canceled.
            </summary>
            <param name="action"></param>
            <param name="target"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetNextVariableId">
            <summary>
            Gets next id for variable. Used by Variable ctor.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ProposeNextVarID(System.Int32)">
            <summary>
            Proposes the <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> that is to be given to the next added 
            <see cref="T:Microsoft.Research.Science.Data.Variable"/>.
            </summary>
            <param name="nextVarID">Proposed ID for the next <see cref="T:Microsoft.Research.Science.Data.Variable"/></param>
            <remarks>If the <paramref name="nextVarID"/> is less then current, the current ID remains unchanged.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ClearVariableCollection">
            <summary>
            Removes all variables from the collection.
            Starts new change transaction.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ClearCSCollection">
            <summary>
            Removes all cs from the collection.
            Starts new change transaction.
            </summary>
            <remarks>
            For example, can be used by the provider on loading from file
            to clear existing collection.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.IsReference(Microsoft.Research.Science.Data.Variable,Microsoft.Research.Science.Data.Variable)">
            <summary>Checks whether one variable is reference to another</summary>
            <param name="v1">Referencing variable</param>
            <param name="v2">Referenced variable</param>
            <returns>true is v1 references v2 or false otherwise</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.IncludeDataSet(System.String)">
            <summary>Includes variables from DataSet</summary>
            <param name="uri">DataSet uri</param>
            <remarks>All variables are added if no fragment part present in uri</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableToCollection(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Adds the variable to the inner collection of variables.
            Should be used by derived classes and the <see cref="T:Microsoft.Research.Science.Data.Variable"/> only to extend the collection.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableToCollection(Microsoft.Research.Science.Data.Variable,Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Adds the variable to the inner collection of variables.
            Should be used by derived classes and the 
            <see cref="T:Microsoft.Research.Science.Data.Variable"/>class only to extend the collection.
            Parameter <paramref name="proposedChanges"/> must be prepared.
            </summary>
            <param name="proposedChanges">Container for the changes to be accumulated in.</param>
            <param name="var"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateVariable``1(System.String,System.String[])">
            <summary>
            Creates new specific variable (doesn't add it to the collection).
            </summary>
            <typeparam name="DataType"></typeparam>
            <param name="varName"></param>
            <param name="dims"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateVariable(System.Type,System.String,System.String[])">
            <summary>
            Untyped version of <see cref="M:Microsoft.Research.Science.Data.DataSet.CreateVariable``1(System.String,System.String[])"/>.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.String[])">
            <summary>
            Creates new <see cref="T:Microsoft.Research.Science.Data.Variable"/> and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data for the variable.</typeparam>
            <param name="varName">Name of the variable.</param>
            <param name="dims">List of names of the variable's dimensions.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>See list of supported types in remarks for the <see cref="T:Microsoft.Research.Science.Data.Variable"/> class.</para>
            <para>
            See remarks for the method <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,System.String[])"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.Array,System.String[])">
            <summary>
            Creates new <see cref="T:Microsoft.Research.Science.Data.Variable"/> and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data for the variable.</typeparam>
            <param name="varName">Name of the variable.</param>
            <param name="array">Initial data for the variable.</param>
            <param name="dims">List of names of the variable's dimensions. If null, dimensions are auto-named.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>See list of supported types in remarks for the <see cref="T:Microsoft.Research.Science.Data.Variable"/> class.</para>
            <para>
            If both <paramref name="array"/> and <paramref name="dims"/> are null,
             or  <paramref name="array"/> is null and <paramref name="dims"/> is an empty array,
            then <see cref="T:Microsoft.Research.Science.Data.DataSet"/> creates a scalar <see cref="T:Microsoft.Research.Science.Data.Variable"/>.
            </para>
            <para>
            The <paramref name="array"/> is copied by the method, therefore after this method call, it is allowed
            to change the array without affecting the data of the variable or proposed changes to commit.
            </para>
            <para>
            See also remarks for the method <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,System.String[])"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,Microsoft.Research.Science.Data.CoordinateSystem,System.String[])">
            <summary>
            Creates new <see cref="T:Microsoft.Research.Science.Data.Variable"/> and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data for the variable.</typeparam>
            <param name="varName">Name of the variable.</param>
            <param name="dims">List of names of the variable's dimensions. If null, names are inferred.</param>
            <param name="cs">Default coordinate system for the variable being added.</param>
            <returns>New variable.</returns>
            <remarks>
            See remarks for the method <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,System.String[])"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.Array,Microsoft.Research.Science.Data.CoordinateSystem,System.String[])">
            <summary>
            Creates new <see cref="T:Microsoft.Research.Science.Data.Variable"/> and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data for the variable.</typeparam>
            <param name="varName">Name of the variable.</param>
            <param name="array">Initial data for the variable.</param>
            <param name="dims">List of names of the variable's dimensions.</param>
            <param name="cs">Default coordinate system for the variable being added.</param>
            <returns>New variable.</returns>
            <remarks>
            See also remarks for the method <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,System.String[])"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,System.String[])">
             <summary>
             Creates new <see cref="T:Microsoft.Research.Science.Data.Variable"/> and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
             </summary>
             <param name="dataType">Type of data for the variable.</param>
             <param name="varName">Name of the variable.</param>
             <param name="array">Initial data for the variable.</param>
             <param name="dims">List of names of the variable's dimensions.</param>
             <returns>New variable.</returns>		
             <remarks>
             <para>See list of supported types in remarks for the <see cref="T:Microsoft.Research.Science.Data.Variable"/> class.</para>
             <para>New variable can be defined and added into a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> at any time 
             (obviously, this procedure changes the schema of a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>). 
             The creating and adding of a variable are performed as a single operation by 
             AddVariable methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class. 
             These methods accept at least a name of a variable, its type and dimensions, and return new variable 
             instance.
             </para>		
             <para>
             Parameters <paramref name="array"/> and <paramref name="dims"/> can be null.
             A rank of the variable (i.e. a number of dimensions) is either equal to the rank of <paramref name="array"/>
             (if it is not a null) or a length of the <paramref name="dims"/>. Initial data of the new variable is
             an <paramref name="array"/>. If both array and dims are nulls (or <paramref name="dims"/> 
             is an empty array), then the variable is a scalar, 
             i.e. has rank zero (read more in remarks for <see cref="T:Microsoft.Research.Science.Data.Variable"/>).
             </para>
             <para>
             The <paramref name="array"/> is copied by the method, therefore after this method call, it is allowed
             to change the array without affecting the data of the variable or proposed changes to commit.
             </para>
             <example>
             <para>
             Let’s get an example of the methods use:
             </para>
             <code>
             public void AddVariables1(DataSet sds)
             {
            		// Variable "A" is a 1d variable of type DateTime depending on dimension "x"
                 Variable&lt;DateTime&gt; time = sds.AddVariable&lt;DateTime&gt;("A", "x");
                 time.Metadata["DisplayName"] = "Time";
             
                 Variable&lt;double&gt; u = sds.AddVariable&lt;double&gt;("B", "x");
                 u.Metadata["DisplayName"] = "U-component of velocity";
             
                 Variable&lt;double&gt; v = sds.AddVariable&lt;double&gt;("C", "x");
                 v.Metadata["DisplayName"] = "V-component of velocity";
             } 
             </code>
             <para>
             In the example, three one-dimensional variables A, B and C are added to the given <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance.
             All variables depends on same dimension named <c>"x"</c>.
             The <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/> property defines corresponded metadata entry.
             </para>
             </example>
             <para>
             The very important is that the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class sets relations between added variables. 
             The rule is: all dimensions of different variables with same name are considered as related 
             (i.e. they share same dimension). This means that values with equal indices by related 
             dimensions in different variables are considered as corresponded, and lengths 
             of related dimensions in different variable must be equal. See <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> 
             about constraints on data.
             </para>
             <para>Therefore in the given example all arrays depend on the same dimension named "x". 
             This leads to the constraint when lengths of A, B and C must be equal, and A, 
             for instance, can be an axis for B and C.
             </para>	
             <para>
             Dimension name is an arbitrary string, used only to specify 
             which dimensions of different variables are related.
             </para>
             <para><see cref="P:Microsoft.Research.Science.Data.Variable.Rank"/> of a variable is computed as a number of specified dimensions. 
             Thus all dimensions must be given.
             </para>
             <example>
             <code>
            public void AddVariables2(DataSet sds)
            {
             sds.AddVariable&lt;double&gt;("lat", "y");
             sds.AddVariable&lt;double&gt;("lon", "x");
             sds.AddVariable&lt;double&gt;("pressure", "x", "y");
            } 
             </code>
             <para>
             In this example, variables <c>lat and lon</c> are one-dimensional, 
             pressure is two-dimensional variable, and a pair <c>lon</c> and <c>pressure</c> 
             (by first dimension), and another pair lat and pressure (by second dimension) 
             depend on a same dimension. In other words, values <c>pressure[i,j]</c> 
             corresponds to both <c>lon[i]</c> and <c>lat[j]</c>.
             </para>
             </example>
             <para>
             The constraint on variables requests that their dimensions with same name must have same length.
             </para>		
             </remarks>
             <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,Microsoft.Research.Science.Data.CoordinateSystem,System.String[])">
            <summary>
            Creates new <see cref="T:Microsoft.Research.Science.Data.Variable"/> and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <param name="dataType">Type of data for the variable.</param>
            <param name="varName">Name of the variable.</param>
            <param name="array">Initial data for the variable.</param>
            <param name="dims">List of names of the variable's dimensions.</param>
            <param name="cs">Default coordinate system for the variable being added.</param>
            <returns>New variable.</returns>		
            <remarks>
            The method is obsolete. See method
            <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,System.String[])"/>
            instead.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference``1(Microsoft.Research.Science.Data.Variable{``0},System.String[])">
            <summary>
            Creates a reference variable.
            </summary>
            <param name="var">Target variable.</param>
            <param name="dims">If not null, defines dimensions of the variable within this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
            <returns>Reference variable to the given variable.</returns>
            <remarks>
            <para>See remarks for the <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference(Microsoft.Research.Science.Data.Variable,System.String[])"/>.
            </para></remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference(Microsoft.Research.Science.Data.Variable,System.String[])"/>
            <exception cref="T:System.NotSupportedException">References within the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> are prohibited.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference(Microsoft.Research.Science.Data.Variable,System.String[])">
             <summary>
             Creates a reference variable.
             </summary>
             <param name="var">Target variable.</param>
             <param name="dims">If not null, defines dimensions of the variable within this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
             <returns>Reference variable to the given variable.</returns>
             <remarks>
             <para>It is prohibited to create a reference to a variable from the same <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
             </para>
             <para>
             If <paramref name="dims"/> is null or an empty array, the reference variable has the same dimensions,
             as the <paramref name="var"/> does.
             </para>
             <para>
             Reference variable is a special kind of variables whose purpose is to refer another variable.
             All requests to data and metadata are translated to corresponding requests for the
             underlying variable.
             Changes to underlying variable generate corresponding events for the reference variable, etc.
             Both target and reference variables share the metadata collection.
             Names of dimensions and coordinate systems can change independently and 
             don't cause another variable to be changed.
             </para>
             <para>
             If a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has incoming or outcoming reference, it is linked to another
             <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and they can be committed only together (i.e. "distributed" commit happens).
             The <see cref="P:Microsoft.Research.Science.Data.DataSet.IsLinked"/> property gets the value indicating whether the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
             has incoming or outcoming references or not.
             The <see cref="M:Microsoft.Research.Science.Data.DataSet.GetLinkedDataSets"/> method returns list of linked DataSets.
             </para>
             </remarks>
             <example>
             The following example creates two DtaSets; creates a variable in the first and
             adds a reference to the variable into the second.
             Then it changes both data and metadata for both variables and checks how these
             changes are propogated.
             <code>
             using (DataSet ds1 = DataSet.Open("msds:csv?file=test.csv&amp;openMode=create"))
             using (DataSet ds2 = DataSet.Open("msds:csv?file=test2.csv&amp;openMode=create"))
            	{
            		ds1.IsAutocommitEnabled = false;
            		ds2.IsAutocommitEnabled = false;
             
            		// Adding a variable "v1" into ds1
            		Variable&lt;int&gt; v = ds1.AddVariable&lt;int&gt;("v1", "1");
            		// Adding a reference to "v1" into ds2
            		Variable&lt;int&gt; rf = ds2.AddVariableByReference&lt;int&gt;(v);
            
            		// ds1 and ds2 are linked through the variable that is changed.
            		// Therefore, a distributed commit happens and both DataSets are to be committed 
            		// within a single transaction.
            		ds1.Commit();
            		Assert.IsFalse(ds1.HasChanges); 
            		Assert.IsFalse(ds2.HasChanges); // ds2 is committed, too
            
            		//-- Changing var
            		int[] a1 = new int[] { 1, 2, 3 };
            		v.Append(a1);  // changing "v1"
            		Assert.IsTrue(ds1.HasChanges);
            		Assert.IsTrue(ds2.HasChanges); // true for the rf is changed
            		ds2.Commit(); // distributed commit commits ds1 and ds2
            
            		// Both variables have same data:
            		Assert.IsTrue(Compare(a1, v.GetData()));  
            		Assert.IsTrue(Compare(a1, rf.GetData()));
            
            		//-- Changing ref var
            		int[] a2 = new int[] { 1, 2, 3, 4, 5, 6 };
            		rf.PutData(a2); // changing reference to "v1"
            		Assert.IsTrue(ds1.HasChanges); // v1 is changed
            		Assert.IsTrue(ds2.HasChanges);
            		ds1.Commit(); // distributed commit
            		Assert.IsTrue(Compare(a2, v.GetData())); // same data
            		Assert.IsTrue(Compare(a2, rf.GetData()));
            
            		//-- Changing var metadata
            		// Metadata changes are propogated, too.
            		v.Metadata["test"] = 10.0;
            		Assert.IsTrue(ds1.HasChanges);
            		Assert.IsTrue(ds2.HasChanges);
            		ds1.Commit();
            		Assert.AreEqual(10.0, (double)v.Metadata["test"]); 
            		Assert.AreEqual(10.0, (double)rf.Metadata["test"]); 
            
            		//-- Changing ref var
            		// Metadata changes are propogated, too.
            		rf.Metadata["test"] = 9.0;
            		Assert.IsTrue(ds1.HasChanges);
            		Assert.IsTrue(ds2.HasChanges);
            		ds1.Commit();
            		Assert.AreEqual(9.0, (double)v.Metadata["test"]);
            		Assert.AreEqual(9.0, (double)rf.Metadata["test"]);
            
            		//-- Changing both
            		rf.Metadata["test"] = 8.0;
            		v.Metadata["test"] = 7.0; // latest must be actual
            		Assert.IsTrue(ds1.HasChanges);
            		Assert.IsTrue(ds2.HasChanges);
            		ds1.Commit();
            		Assert.AreEqual(7.0, (double)v.Metadata["test"]);
            		Assert.AreEqual(7.0, (double)rf.Metadata["test"]);
            	}
             </code>
             </example>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference``1(Microsoft.Research.Science.Data.Variable{``0},System.String[])"/>
             <exception cref="T:System.NotSupportedException">References within the DataSet are prohibited.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddIncomingReference(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Adds incoming refence to the data set.
            The method is called from another data set when it adds a reference to the
            variable from this data set.
            </summary>
            <param name="refVar"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.RemoveIncomingReference(Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Removes all incoming references whose source is given data set.
            This method is invoked by the referal data set.
            </summary>
            <param name="sourceDataSet"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.RemoveIncomingReference(Microsoft.Research.Science.Data.DataSetLink)">
            <summary>
            Removes given incomingLink:
            finds the entry that refers the variable from the given link and
            removes it.
            This method is invoked by the referal data set.
            </summary>
            <param name="incomingLink"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ReferencedVariableGotNewCoordinateSystem(System.Object,Microsoft.Research.Science.Data.CoordinateSystemAddedEventArgs)">
            <summary>
            This method handles cases when a cs has been added to the 
            referenced variable, hence we have to add the same cs to our cs collection.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetAutoDimensions(System.String[])">
            <summary>
            Fills the prepared string array <paramref name="dims"/> with names of dimensions
            those are assigned automicatically.
            </summary>
            <param name="dims">An array to fill with dimensions names.</param>
            <remarks>
            <para>If the <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable(System.Type,System.String,System.Array,System.String[])"/>
            has no dimensions specified, it automatically names the dimensions.
            These names can be found using <see cref="M:Microsoft.Research.Science.Data.DataSet.GetAutoDimensions(System.String[])"/> method.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable,System.Boolean,System.String,System.String[])">
            <summary>
            Sets up and adds a <see cref="T:Microsoft.Research.Science.Data.Variable"/> to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> by value, not as a reference.		
            </summary>
            <param name="var">A variable to add.</param>
            <param name="varName">The name of the variable in the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
            <param name="dims">List of names of the variable's dimensions in the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
            <param name="includeCoordinateSystems"></param>
            <returns>Just added variable.</returns>
            <remarks>
            All the data and metadata of the <paramref name="var"/> 
            (and optionally of all related coordinate systems and their axes)
            will be copied to the new just created variable using the data set's data access provider.
            Real copy process is done during committing (at the precommit phase).
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable,System.Boolean)">
            <summary>
            Adds a variable to the data set by value.
            It means that all its data (and optionally of all related coordinate systems and their axes)
            will be copied using the data set's data access provider.
            </summary>
            <param name="var">A variable to add.</param>    
            <param name="includeCoordinateSystems"></param>
            <returns>Just added variable.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Sets up and adds a <see cref="T:Microsoft.Research.Science.Data.Variable"/> to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> by value.		
            </summary>
            <param name="var">A variable to add.</param>
            <returns>Created variable.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue``1(Microsoft.Research.Science.Data.Variable{``0},System.String,System.String[])"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable,System.String,System.String[])">
            <summary>
            Sets up and adds a <see cref="T:Microsoft.Research.Science.Data.Variable"/> to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> by value.
            </summary>
            <param name="var">A variable to add.</param>
            <param name="name">The name of the created variable in the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
            <param name="dims">The created variable's dimensions.</param>
            <returns>Created variable.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue``1(Microsoft.Research.Science.Data.Variable{``0},System.String,System.String[])"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue``1(Microsoft.Research.Science.Data.Variable{``0})">
            <summary>
            Sets up and adds a <see cref="T:Microsoft.Research.Science.Data.Variable"/> to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> by value.
            </summary>
            <param name="var">A variable to add.</param>
            <returns>Created variable.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue``1(Microsoft.Research.Science.Data.Variable{``0},System.String,System.String[])"/>.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue``1(Microsoft.Research.Science.Data.Variable{``0},System.String,System.String[])">
             <summary>
             Sets up and adds a <see cref="T:Microsoft.Research.Science.Data.Variable"/> to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> by value.	
             </summary>
             <typeparam name="DataType">Type of data.</typeparam>
             <param name="var">A variable to add.</param>
             <param name="name">The name of the created variable in the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
             <param name="dims">The created variable's dimensions.</param>
             <returns>Created variable.</returns>
             <remarks>
             <para>
             The method creates new <see cref="T:Microsoft.Research.Science.Data.Variable"/> in the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> with the same rank and data type as <paramref name="var"/> 
             and copies all the data and metadata from the <paramref name="var"/> 
             to the created <see cref="T:Microsoft.Research.Science.Data.Variable"/>.
             </para>
             <para>
             Please note, if the <paramref name="var"/> has changes (see <see cref="P:Microsoft.Research.Science.Data.Variable.HasChanges"></see>),
             proposed data also is copied into the target <see cref="T:Microsoft.Research.Science.Data.Variable"/>. But all modifications of the <paramref name="var"/>
             done after the method is finished, do not affect the method's resulting <see cref="T:Microsoft.Research.Science.Data.Variable"/>.
             </para>
             </remarks>
             <example>
             <code>
            	int[] a1 = new int[] { 1, 2, 3 };
            	string[,] a2 = new string[,] { { "a", "b", "c" }, { "d", "e", "f" }, { "g", "h", "i" } };
            
            	using (DataSet src = DataSet.Open("msds:csv?file=test.csv&amp;openMode=create"))
            	using (DataSet dst = DataSet.Open("msds:memory"))		
             {
            		src.IsAutocommitEnabled = false;
            		dst.IsAutocommitEnabled = false;
            		
            		var var1 = src.AddVariable&lt;int&gt;("var1", "x");
            		var var2 = src.AddVariable&lt;string&gt;("var2", "y", "z");
            
            		var1.PutData(a1);
            		var2.PutData(a2);
            		src.Commit();
            
            		var1.Append(new int[] { 4 }); // adding "4" to proposed schema of var1
            		// dvar1 is a deep copy of var1, including proposed schema:
            		var dvar1 = dst.AddVariableByValue&lt;int&gt;(var1); 
            		var dvar2 = dst.AddVariableByValue&lt;string&gt;(var2);
            
            		// Adding "5" to proposed schema of dvar1.
            		// It doesn't affect var1!
            		dvar1.Append(new int[] { 5 });
            
            		// Committing both data sets 
            		dst.Commit();
            		src.Commit();
            
            		Assert.IsFalse(src.HasChanges);
            		Assert.IsFalse(dst.HasChanges);
             
            		Assert.IsTrue(Compare(new int[] { 1, 2, 3, 4 }, var1.GetData()));
            		Assert.IsTrue(Compare(a2, var2.GetData()));
            		Assert.IsTrue(Compare(a2, dvar2.GetData()));
            		Assert.IsTrue(Compare(new int[] { 1, 2, 3, 4, 5 }, dvar1.GetData()));
            	}
             </code>
             </example>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Clone(System.String)">Creates a deep copy of a DataSet.</seealso>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue``1(Microsoft.Research.Science.Data.Variable{``0},System.Boolean,System.String,System.String[])">
            <summary>
            Sets up and adds a variable to the data set by value, not as a reference.
            It means that all its data (and optionally of all related coordinate systems and their axes)
            will be copied using the data set's data access provider.
            </summary>
            <param name="var">A variable to add.</param>
            <param name="varName">The name of the variable in the data set.</param>
            <param name="dims">List of names of the variable's dimensions in the data set.</param>
            <param name="includeCoordinateSystems"></param>
            <returns>Just added variable.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue``1(Microsoft.Research.Science.Data.Variable{``0},System.Boolean)">
            <summary>
            Adds a variable to the data set by value, not as a reference.
            It means that all its data (and optionally of all related coordinate systems and their axes)
            will be copied using the data set's data access provider.
            </summary>
            <param name="var">A variable to add.</param>   
            <param name="includeCoordinateSystems"></param>
            <returns>Just added variable.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetCoordinateSystems(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the specified version of read-only collection of coordinate systems.
            </summary>
            <param name="version">The version of schema to take CoordinateSystems from.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddCoordinateSystemToCollection(Microsoft.Research.Science.Data.CoordinateSystem)">
            <summary>
            Adds the coordinate system to the internal collection of coordinate systems 
            and fires appropriate events.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.AddCoordinateSystemToCollection(Microsoft.Research.Science.Data.CoordinateSystem,Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Adds the coordinate system to the internal collection of coordinate systems 
            and fires appropriate events.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateCoordinateSystem(System.String,Microsoft.Research.Science.Data.Variable[])">
            <summary>
            Creates a coordinate system with specified name and attaches it to the data set.
            </summary>
            <param name="name">Name of the coordinate system.</param>
            <param name="axes">Axes contained by the coordinate system.</param>
            <returns>The <see cref="T:Microsoft.Research.Science.Data.CoordinateSystem"/> instance.</returns>
            <remarks>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.DataSet"/> prohibits different coordinate systems with the same name.
            An attempt to add a coordinate system with existing name leads to an exception.
            </para>
            <para>
            After a coordinate system is added, it should be filled with axes
            using <see cref="M:Microsoft.Research.Science.Data.CoordinateSystem.AddAxis(Microsoft.Research.Science.Data.Variable)"/> methods. After a coordinate system
            is committed, it cannot be modified.
            </para>
            <para>
            A coordinate system can be added to a variable, it means that the variable
            is defined in that coordinate system. And there are constraints on this type
            of relations. See details in remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method.
            </para>
            <example>
            The following example creates a variable "time" to store time moments;
            a coordinate system "Time" with one axis "time";
            and a variable "airTemp" defined in that coordinate system.
            Note that "time" and "airTemp" depend on the same dimension.
            <code>
            using (DataSet ds = CreateDataSet())
            {
            	ds1.IsAutocommitEnabled = false;
            	
            	Variable time = ds.AddVariable&lt;int&gt;("time", "t");
            	CoordinateSystem cs = ds.CreateCoordinateSystem("Time", time);
            	// cs has one axis "time"
            	
            	Variable var = ds.AddVariable&lt;int&gt;("airTemp", "time");
            	var.AddCoordinateSystem(cs);
            	ds.Commit();
            }
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateCoordinateSystem(System.String,Microsoft.Research.Science.Data.Variable[],Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Creates a coordinate system with specified name and places it in the given changeset.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetChanges">
            <summary>
            Gets a copy of the DataSet that contains all changes made to it since last committing.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetSchema">
            <summary>
            Gets the schema of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <returns>Committed schema of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>The method returns the committed schema of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            To get proposed schema, use <see cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/>.</remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>Gets the specified version of <see cref="T:Microsoft.Research.Science.Data.DataSet"/> schema.</summary>
            <param name="version">Version of the schema to get.</param>
            <returns>Specified version of schema of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is modified (see <see cref="P:Microsoft.Research.Science.Data.DataSet.HasChanges"/> property),
            it has two versions of the schema. First is a committed schema (the version named <see cref="F:Microsoft.Research.Science.Data.SchemaVersion.Committed"/>),
            second is a proposed schema (the version named <see cref="F:Microsoft.Research.Science.Data.SchemaVersion.Proposed"/>). 
            The committed schema describes the actual content of the underlying storage and always
            satisfies the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> constraints.
            The proposed schema may not to satisfy <see cref="T:Microsoft.Research.Science.Data.DataSet"/> constraints and is being accumulated
            as a user modifies the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> (if the <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/> is false).
            After sucessful <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>, the proposed schema becomes committed.
            Version <see cref="F:Microsoft.Research.Science.Data.SchemaVersion.Recent"/> corresponds to the proposed version, if it exists;
            or to the committed version, otherwise.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CaptureCommittedSchema">
            <summary>
            Builds committed schema for the data set and saves it in the
            field committedSchema.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.TryCommit">
            <summary>
            Checks constraints and if the check succeeds, commits all recent changes.
            </summary>
            <returns>If commit succeeds, returns true; otherwise, returns false or throws an exception.</returns>
            <remarks>
            <para>
            If commit succeeds, returns true.
            If commit is failed because of failed constraints check, returns false; 
            otherwise, throws an exception describing the failure reason.
            See also <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Commit">
            <summary>
            Checks constraints and if the check succeeds, commits all recent changes.
            </summary>
            <remarks>
            <para>
            Two-phase transaction mechanism is used to commit the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> or a number
            of linked by reference variables <see cref="T:Microsoft.Research.Science.Data.DataSet"/>s (see also 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.GetLinkedDataSets"/>).
            This approach guarantees that persistent data are always in a consistent state, 
            i.e. satisfy required constraints.
            The rule says that all variables sharing a dimension must have equal length
            by that dimension. The dimensions are shared between two or more variables if 
            they have same name. Dimensions names are specified when a <see cref="T:Microsoft.Research.Science.Data.Variable"/>
            is added to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> (see <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable``1(System.String,System.Array,System.String[])"/>).
            </para>
            <para>
            If any changes are made in a schema or data of a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, these changes are 
            accumulated until a user tries to commit them. 
            Therefore, if a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has any changes (see <see cref="P:Microsoft.Research.Science.Data.DataSet.HasChanges"/>), 
            there are two versions of a schema available in the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
            (see <see cref="T:Microsoft.Research.Science.Data.SchemaVersion"/>): 
            first is a committed schema (it is always consistent) and second is a proposed schema 
            (it has no constraints); see also <see cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/>. 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> of proposed changes can succeed only if all 
            constraints are satisfied; in this case proposed changes become new consistent state of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            If the check fails, a user can either try to fix changes or 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/> to a previous consistent state.
            </para>
            <para>
            To ease the work with the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, the autocommitting capability is added 
            and is enabled by default (see <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/> property). 
            When it is enabled, the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> tries to commit after every change of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            Consider disable it to increase the performance.
            </para>
            <example>
            <code>
            ds.IsAutocommitEnabled = false;
            . . .
            
            try {
            	// Renaming just added (not yet committed) variable "A", i.e. changing its schema:
            	ds.Variables["A", SchemaVersion.Recent].Name = "D"; 
            	. . .
            	ds.Commit();
            }
            catch  { // commit failed
            	ds.Rollback();
            }
            </code>
            </example>
            <para>
            If constraints check fails, the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method throws 
            <see cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/> exception with information about the fault.
            </para>
            <para>
            See also method <see cref="M:Microsoft.Research.Science.Data.DataSet.TryCommit"/> and property
            <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/>.
            </para>
            </remarks>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException">Thrown if commit has failed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Thrown if the DataSet is read only.</exception>
            <exception cref="T:System.ObjectDisposedException">Thrown if the DataSet is disposed.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TryCommit"/>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CommitCustomChanges(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Commits custom changes.
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ApplyChanges(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Applies given changeset to the data set.
            The process includes both precommit and final commit stages.
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Rollback">
            <summary>
            Rolls back all changes.
            </summary>
            <remarks>Throws no exceptions.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.RollbackCore">
            <summary>
            Implements rollback mechanism for this DataSet (not distributed).
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Precommit(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Makes precommit procedure for every variable of the data set and
            returns recent dimension list.
            </summary>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.FinalCommit(Microsoft.Research.Science.Data.DataSet.PrecommitOutput)">
            <summary>
            Performs final committing procedure and is called after all changes have been succeeded.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.TransformAppendToPut(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Transforms all appended data pieces transforms into put pieces.
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.TransformAppendToPut(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            Transforms all appended data pieces transforms into put pieces
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CheckChangeset(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Checks all constraints for given changeset and if
            the check failed, throws an exception. 
            No events are thrown during the process.
            </summary>
            <param name="changeset"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.UpdateChanges(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Forces dependant variables to update their changes
            (possibly, take it from their source variables).
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CheckConstraints(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Checks global contraints on variables and coordinate systems
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetRecentVariables">
            <summary>
            Returns the recent collection of the variables.
            </summary>
            <remarks> 
            When the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is committed it is committed collection of variables,
            when proposed it is proposed and committed variables.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetRecentVariables(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Returns the collection of the variables including committed and added variables
            from proposed changes.
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.StartChanges">
            <summary>
            Starts the state changing transaction.
            </summary>
            <remarks>
            <para>
            It is used to accumulate changes from public data set API.
            </para>
            <para>
            If the changes has already been started, the method does nothing.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CheckComplementarityConstraints(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Checks constraints when the variable has been committed internally, i.e. in local Commit() call.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OnTransactionOpened">
            <summary>
            The method is called when new transaction is started.
            </summary>
            <remarks>
            <para>
            The method is called when a first change has been made in committed data set or its dependencies.
            </para>
            <para>
            Caution: this method can be invoked from the DataSet constructor to add a metadata global variable,
            until the provider type's constructor is called. 
            This case must be supported, for example, by using "isInitialized" field to find out that the method 
            is called from the constructor and, possibly, do nothing in that case.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OnPrecommitting(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            The method is called at the beggining of the precommit stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            The method is called at the beggining of the precommit stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, right before individual 
            precommit calls for every its variable, but after the Committing event has fired. 
            At Precommit stage it is required to change the state.
            Override it if you want to perform precommit stage for the data set on your own way.
            For example, it is possible to make actual change of the variables' state simultaneously here.
            On errors an exception should be thrown.
            </remarks>
            <param name="changes">Proposed changes</param>
            <returns>True to continue committing; False to cancel.</returns>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OnPrecommit(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
             The method is called at the end of the precommit stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            The method is called at the end of the precommit stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, right after individual 
            precommit calls for every its variable. 
            At Precommit stage it is required to change the state.
            Override it if you want to perform precommit stage for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> on your own way.
            For example, it is possible to make actual change of the variables' state simultaneously here.
            On errors an exception should be thrown.
            </remarks>
            <param name="changes">Proposed changes</param>
            <exception cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OnCommit">
            <summary>
            The method is called at the end of the commit stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            The method is called at the end of the commit stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, right after individual 
            commit calls for every variable. 
            At Commit stage it is required to commit the change of state.
            Override it if you want to perform commit stage for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> on your own way.
            For example, it is possible to commit actual change of the variables' state simultaneously here.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Undo">
            <summary>
            The method is called when the precommit fails. Providers can cancel possible preparations for committed.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.OnRollback">
            <summary>
            The method is called at the end of the rollback stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            The method is called at the end of the rollback stage of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, right after individual 
            rollback calls for every variable. 
            At Rollback stage it is required to rollback the change of state.
            Override it if you want to perform rollback stage for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> on your own way.
            For example, it is possible to rollback actual change of the variables' state simultaneously here.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.RollbackLinkedDataSets">
            <summary>
            Makes distributed rollback operations for linked data sets.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.DistributedCommitChanges(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Makes distributed commit;
            given changes are for this data set;
            all others do commit their local changes.
            </summary>
            <param name="proposedChangesForMe">Changes for the DataSet initiated the commit.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetLinkedDataSets">
            <summary>
            Gets DataSets those are linked with this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <returns>An array of DataSets.</returns>
            <remarks>
            <para>If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is linked (see <see cref="P:Microsoft.Research.Science.Data.DataSet.IsLinked"/>),
            this method returns an array of DataSets those have references to this <see cref="T:Microsoft.Research.Science.Data.DataSet"/> or
            targets of references contained in this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, and
            recursively for those DataSets. Also, the returned array always contains
            this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </para>
            <para>If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is not linked, the returned array contains one element - this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </para>
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.IsLinked"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetActiveLinkedDataSet">
            <summary>
            Builds the list of data sets linked to this data sets with active links
            (i.e. via variables with changes).
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetActiveLinkedDataSet(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Builds the list of data sets linked to this data sets with active links
            (i.e. via variables with changes).
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.String[],System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Creates a stridden variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data element.</typeparam>
            <param name="name">Name of the output variable. <c>null</c> is supported.</param>
            <param name="dimensions">Names of stridden dimensions or null.</param>
            <param name="raw">Source variable to stride.</param>
            <param name="origin">Starting indices. <c>null</c> means all zeros.</param>
            <param name="stride">Stride indices, must contain values greater or equal to 0. <c>null</c> means all 1.</param>
            <param name="count">A number of values in a stridden variable. count[i] == 0 means unlimited i-th dimension,
            <c>null</c> means all zeros.</param>
            <param name="hiddenEntries">Collection of attributes which are not to be inherited from the underlying metadata.
            These entries are changed independently by source and stridden variable.</param>
            <param name="readOnlyEntries">Collection of attributes of a source variable that cannot be changed through this collection.</param>
            <returns>A stridden variable.</returns>
            <remarks>
            <para>
            See <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/>
            for details. This method additionally enables specification names of output (stridden) dimensions through
            <paramref name="dimensions"/>. If <paramref name="dimensions"/> is null, output dimensions are named automatically.
            </para>        
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.ScaleVariable``2(Microsoft.Research.Science.Data.Variable{``1},``0,``0,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Creates a stridden variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data element.</typeparam>
            <param name="name">Name of the output variable. <c>null</c> is supported.</param>
            <param name="raw">Source variable to stride.</param>
            <param name="origin">Starting indices. <c>null</c> means all zeros.</param>
            <param name="stride">Stride indices, must contain values greater or equal to 0. <c>null</c> means all 1.</param>
            <param name="count">A number of values in a stridden variable. count[i] == 0 means unlimited i-th dimension,
            <c>null</c> means all zeros.</param>
            <param name="hiddenEntries">Collection of attributes which are not to be inherited from the underlying metadata.
            These entries are changed independently by source and stridden variable.</param>
            <param name="readOnlyEntries">Collection of attributes of a source variable that cannot be changed through this collection.</param>
            <returns>A stridden variable.</returns>
            <remarks>
            <para>
            The method creates a stridden variable, implementing the interface
            <see cref="T:Microsoft.Research.Science.Data.IStriddenVariable"/>, and returns it. 
            The stridden variable has the same type as the <paramref name="raw"/> does.
            The values of that variable are taken from <paramref name="raw"/>.</para>
            <para>
            Subsetting parameters for a stridden variable are: <paramref name="origin"/>, <paramref name="stride"/>,
            <paramref name="count"/>. They are defined when a variable is created.
            Length of the parameters must be equal to the rank of the source variable.
            </para>
            <para>
            <list type="bullet">
            <item><description>origin == null: all start indices are zeros;</description></item>
            <item><description>count == null: all dimensions of a stridden variable are unlimited and depend on the source variable;</description></item>
            <item><description>stride == null: stride is 1 for all dimensions;</description></item>
            <item><description>count[i] == 0: i-th dimension is unlimited and always is equal to the length of the source variable;</description></item>
            <item><description>stride[j] == 0: removes dimension j from result, corresponding count[j] must be 1.</description></item>
            </list>
            </para>
            <para>
            The method creates for a stridden variable new dimensions with unique complex name,
            except for the case when origin=0, stride=1, count=0 (i.e. the dimension is not strided); in this case
            the stridden variable depends on the same dimension as the source variable does.
            </para>
            <para>
            Parameters of the striding are reflected in the <see cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/> of the stridden variable.
            Attribute names are available through const fields of the class <see cref="T:Microsoft.Research.Science.Data.StriddenVariableKeys"/>.
            Metadata attribute "indexSpaceOrigin" of type int[] describes starting indices for stridden variable.
            <list type="bullet">
            <item><description>change of the origin parameter must not lead to change of the stridden variable's shape. 
            The reason is that a shape of any variable can grow only. 
            Therefore, a stridden variable can grow only if the source variable grows.</description></item>
            <item><description>value indexSpaceOrigin[i] is changeable only if corresponding count[i] &gt; 0 
            (so that the shape of a stridden variable is fixed and cannot change).</description></item>
            </list>
            If a value of the indexSpaceOrigin is incorrect, the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> will fail. 
            </para>
            <para>
            Metadata attributes "indexSpaceStride" and "indexSpaceCount" contain arrays of strides and counts 
            respectively, thus describing parameters of the striding. 
            This are the read only attributes that never change (otherwise they would change the shape).
            </para>
            <para>
            Metadata attribute "indexSpaceSourceDims" contains an array of dimension names of
            the source variable, corresponding to origin indices. This is the read only attribute that never changes.
            </para>
            <para>
            Stridden variable implements <see cref="T:Microsoft.Research.Science.Data.IStriddenVariable"/>.
            The <see cref="T:Microsoft.Research.Science.Data.IStriddenVariable"/> interface can be used to imperatively update the origin parameter.
            See method <see cref="M:Microsoft.Research.Science.Data.IStriddenVariable.SetIndexSpaceOrigin(System.Int32[])"/>.
            </para>
            <para>
            Changes to the underlying variable are reflected in the stridden variable, but not vice versa.
            Hence a stridden variable is always read-only.
            </para>
            <para>
            If the <paramref name="name"/> is null, the name of the output variable will be the same as the name 
            of the input variable <paramref name="raw"/>.
            </para>
            <para>Both source and target variable share the metadata collection.
            But some attributes can be separated or markes as read-only for a stridden variable.
            See parameters <paramref name="hiddenEntries"/> and <paramref name="readOnlyEntries"/>.
            </para>
            <example>
            <code>
            using (DataSet target = OpenDataSet())
            {
            	target.IsAutocommitEnabled = true;
            	
            	/* Preparing the data set */
            	Variable&lt;int&gt; v1d = target.AddVariable&lt;int&gt;("test1d", "x");
            	v1d.PutData(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            	
            	Variable&lt;int&gt; sv1d1 = target.StrideVariable(v1d, new int[] { 1 }, new int[] { 2 }, null, null, new string[] { "units" }, null);
            	sv1d1.Metadata["units"] = "DegC";
            	// Variable sv1d1 also has name "test1d" and depends on new dimension named automatically
            	
            	Assert.IsTrue(Compare(sv1d1.GetData(), new int[] { 1, 3, 5, 7, 9 })); // true
            }
            </code>
            <code>
            using (DataSet target = CreateDataSet())
            {
            	target.IsAutocommitEnabled = true;
            	
                /* Preparing the data set */
            	Variable&lt;int&gt; v2d = target.AddVariable&lt;int&gt;("test2d", new string[]{"x", "y"});
            	v2d.PutData(new int[,] { 0, 1, 2}, {4, 5, 6}, {7, 8, 9});
            	Variable&lt;int&gt; sv2d1 = target.StrideVariable(v1d, new int[,] { 1, 0 }, new int[] { 0, 1 }, null, null);
            	
            	// Dimension "x" is removed:
                Assert.IsTrue(Compare(sv2d1.GetData(), new int[] { 4, 5, 6})); // true
            }
            </code>
            <code>
            using (DataSet target = OpenDataSet())
            {
            	target.IsAutocommitEnabled = true;
            
            	/* Preparing the data set */
            	Variable&lt;int&gt; v1d = target.AddVariable&lt;int&gt;("test1d", "x");
            	v1d.PutData(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 });
            	
            	Variable&lt;int&gt; sv1d1 = target.StrideVariable(v1d, new int[] { 0 }, new int[] { 2 }, new int[] { 2 }, null);
            	
            	Assert.IsTrue(Compare(sv1d1.GetData(), new int[] { 0, 2 })); // true
            
            	// Changing stride origin through metadata:
            	sv1d1.Metadata[StriddenVariableKeys.KeyForOrigin] = new int[] { 2 };
            	
            	Assert.IsTrue(Compare(sv1d1.GetData(), new int[] { 2, 4 })); // true
            	
            }
            </code>
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.ScaleVariable``2(Microsoft.Research.Science.Data.Variable{``1},``0,``0,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String)">
            <summary>
            Creates a stridden variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data element.</typeparam>
            <param name="name">Name of the output variable. <c>null</c> is supported.</param>
            <param name="raw">Source variable to stride.</param>
            <param name="origin">Starting indices. <c>null</c> means all zeros.</param>
            <param name="stride">Stride indices, must contain values greater or equal to 0. <c>null</c> means all 1.</param>
            <param name="count">A number of values in a stridden variable. count[i] == 0 means unlimited i-th dimension
            <c>null</c> means all zeros.</param>
            <remarks>
            Read remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.ScaleVariable``2(Microsoft.Research.Science.Data.Variable{``1},``0,``0,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ScaleVariable``2(Microsoft.Research.Science.Data.Variable{``1},``0,``0,System.String)">
             <summary>
             Creates a scaled variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
             </summary>
             <typeparam name="DataType">The type of data after scaling.</typeparam>
             <typeparam name="RawType">The type of data of the variable to scale.</typeparam>
             <param name="name">The name of the scaled variable.</param>
             <param name="raw">The variable to scale.</param>
             <param name="scale">The scale factor.</param>
             <param name="offset">The offset for scaling.</param>
             <returns>The scaled variable.</returns>
             <remarks>
             <para>
             The method creates a scaled variable and returns it.
             The scaled variable has the same rank and shape as the <paramref name="raw"/> does.
             The values of that variable are linear function of the underlying variable <paramref name="raw"/>.
             Changes to the scaled variable propagate to the underlying variable <paramref name="raw"/>.  
             Changes to the underlying variable are reflected in the scaled variable.
             </para>
             <para>Only limited set of primitive blittable type parameters are supported by this generic variable. 
             Use <see cref="T:Microsoft.Research.Science.Data.TransformedVariable`1"/> for other data types.
             These types are <see cref="T:System.Single"/> and <see cref="T:System.Double"/> for <typeparamref name="DataType"/>;
             <see cref="T:System.Byte"/>, <see cref="T:System.SByte"/>, <see cref="T:System.Int16"/>, 
             <see cref="T:System.UInt16"/>, <see cref="T:System.Int32"/>, <see cref="T:System.UInt32"/>, <see cref="T:System.Int64"/>, 
             <see cref="T:System.UInt64"/>, <see cref="T:System.Single"/> and <see cref="T:System.Double"/> for <typeparamref name="RawType"/>.
             </para>
             <para>
             The variable <paramref name="raw"/> must belong to the same DataSet.
             Otherwise, consider first add a reference to the variable 
             (see <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable,System.String,System.String[])"/>).
             </para>
             <para>Both source and targe variable share the metadata collection.
             See <see cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String},System.String)"/>
             if there is need not to share metadata.
             </para>
             </remarks>
             <example>
             In the following example, a scalar variable (see details in remarks for 
             <see cref="T:Microsoft.Research.Science.Data.Variable"/>)
             is scaled by the formula <c>2*x - 3</c> and then transformed
             to a DateTime. The example also demonstrates two-way changing of the transformed variable and
             source scalar.
             <code>
            	using (DataSet ds = CreateDataSet())
            	{
            		ds.IsAutocommitEnabled = false;	
             
            		DateTime now = DateTime.Now;
            
            		var scalar = ds.AddVariable&lt;int&gt;("scalar");
            		scalar[null] = 5;
            		var scale = ds.ScaleVariable&lt;double, int&gt;(scalar, 2, -3, "scaled");
            		var trans = ds.TransformVariable&lt;DateTime, double&gt;(scale,
            			i =&gt; now.AddDays(i),
            			dt =&gt; dt.Subtract(now).TotalDays,
            			"date");
            
            		ds.Commit();
            
            		Assert.AreEqual(now.AddDays(7), trans[Variable.DefaultIndices]);
            		
            		trans[Variable.DefaultIndices] = now.AddDays(5);
            		ds.Commit();
            		
            		Assert.AreEqual(4, scalar[Variable.DefaultIndices]);
            	}		
             </code>
             </example>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String)"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
             <seealso cref="T:Microsoft.Research.Science.Data.TransformedVariable`1"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ScaleVariable``2(Microsoft.Research.Science.Data.Variable{``1},``0,``0,System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
             <summary>
             Creates a scaled variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
             </summary>
             <typeparam name="DataType">The type of data after scaling.</typeparam>
             <typeparam name="RawType">The type of data of the variable to scale.</typeparam>
             <param name="name">The name of the scaled variable.</param>
             <param name="raw">The variable to scale.</param>
             <param name="scale">The scale factor.</param>
             <param name="offset">The offset for scaling.</param>
             <param name="hiddenEntries">Collection of keys which are not to be inherited from the underlying metadata.
             These entries are changed independently.</param>
             <param name="readOnlyEntries">Collection of keys that cannot be changed through this collection.</param>
             <returns>The scaled variable.</returns>
             <remarks>
             <para>
             The method creates a scaled variable and returns it.
             The scaled variable has the same rank and shape as the <paramref name="raw"/> does.
             The values of that variable are linear function of the underlying variable <paramref name="raw"/>.
             Changes to the scaled variable propagate to the underlying variable <paramref name="raw"/>.  
             Changes to the underlying variable are reflected in the scaled variable.
             </para>
             <para>Only limited set of primitive blittable type parameters are supported by this generic variable. 
             Use <see cref="T:Microsoft.Research.Science.Data.TransformedVariable`1"/> for other data types.
             These types are <see cref="T:System.Single"/> and <see cref="T:System.Double"/> for <typeparamref name="DataType"/>;
             <see cref="T:System.Byte"/>, <see cref="T:System.SByte"/>, <see cref="T:System.Int16"/>, 
             <see cref="T:System.UInt16"/>, <see cref="T:System.Int32"/>, <see cref="T:System.UInt32"/>, <see cref="T:System.Int64"/>, 
             <see cref="T:System.UInt64"/>, <see cref="T:System.Single"/> and <see cref="T:System.Double"/> for <typeparamref name="RawType"/>.
             </para>
             <para>
             The variable <paramref name="raw"/> must belong to the same DataSet.
             Otherwise, consider first add a reference to the variable 
             (see <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable,System.String,System.String[])"/>).
             </para>
             <para>Both source and targe variable share the metadata collection.
             See <see cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String},System.String)"/>
             if there is need not to share metadata.
             </para>
             </remarks>
             <example>
             In the following example, a scalar variable (see details in remarks for 
             <see cref="T:Microsoft.Research.Science.Data.Variable"/>)
             is scaled by the formula <c>2*x - 3</c> and then transformed
             to a DateTime. The example also demonstrates two-way changing of the transformed variable and
             source scalar.
             <code>
            	using (DataSet ds = CreateDataSet())
            	{
            		ds.IsAutocommitEnabled = false;
            		
            		DateTime now = DateTime.Now;
            
            		var scalar = ds.AddVariable&lt;int&gt;("scalar");
            		scalar[null] = 5;
            		var scale = ds.ScaleVariable&lt;double, int&gt;(scalar, 2, -3, "scaled",new string[] { "units" }, null);
            		var trans = ds.TransformVariable&lt;DateTime, double&gt;(scale,
            			i =&gt; now.AddDays(i),
            			dt =&gt; dt.Subtract(now).TotalDays,
            			"date");
                 
                 scale.Metadata["units"] = "DegC";
             
            		ds.Commit();
            
            		Assert.AreEqual(now.AddDays(7), trans[Variable.DefaultIndices]);
            		
            		trans[Variable.DefaultIndices] = now.AddDays(5);
            		ds.Commit();
            		
            		Assert.AreEqual(4, scalar[Variable.DefaultIndices]);
            	}		
             </code>
             </example>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String)"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
             <seealso cref="T:Microsoft.Research.Science.Data.TransformedVariable`1"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.String)">
            <summary>
            Creates a transformed variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data after the transform.</typeparam>
            <typeparam name="RawType">Source variable type of data.</typeparam>
            <param name="raw">Variable to transfrom.</param>
            <param name="transform">Forward transform function.</param>
            <param name="name">Name of the transformed variable.</param>
            <returns>The transformed variable.</returns>
            <remarks>
            See remarks for 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)">
            <summary>
            Creates a transformed variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data after the transform.</typeparam>
            <typeparam name="RawType">Source variable type of data.</typeparam>
            <param name="raw">Variable to transfrom.</param>
            <param name="transform">Forward transform function.</param>
            <param name="backwardTransform">Backward transform function.</param>
            <param name="name">Name of the transformed variable.</param>
            <returns>The transformed variable.</returns>
            <remarks>
            <para>
            The method creates a new variable and returns it.
            The transformed variable has the same rank and shape as the <paramref name="raw"/> does.
            The values of that variable are computed on-the-request via the function <paramref name="transform"/>
            on the basis of the underlying variable <paramref name="raw"/>.
            Changes done to the scaled variable propogate to the underlying variable <paramref name="raw"/>.  
            </para>
            <para>
            If the <paramref name="backwardTransform"/> is not null,  
            changes done to the underlying variable are reflected in the transformed variable using the
            <paramref name="backwardTransform"/>. Otherwise, the transformed variable is read only.
            </para>
            <para>Both source and targe variable share the metadata collection.
            See <see cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String},System.String)"/>
            if there is need not to share metadata.
            </para>
            <para>Example is given in the remarks for 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.ScaleVariable``2(Microsoft.Research.Science.Data.Variable{``1},``0,``0,System.String)"/>.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.ScaleVariable``2(Microsoft.Research.Science.Data.Variable{``1},``0,``0,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String},System.String)">
            <summary>
            Creates a transformed variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <typeparam name="DataType">Type of data after the transform.</typeparam>
            <typeparam name="RawType">Source variable type of data.</typeparam>
            <param name="raw">Variable to transfrom.</param>
            <param name="transform">Forward transform function.</param>
            <param name="backwardTransform">Backward transform function.</param>
            <param name="name">Name of the transformed variable.</param>
            <param name="hiddenMetadataEntries">Collection of keys which are not to be inherited from the underlying metadata.
            These entries are changed independently.</param>
            <param name="readonlyMetadataEntries">Collection of keys that cannot be changed through this collection.</param>
            <returns>The transformed variable.</returns>
            <remarks>
            <para>The <paramref name="hiddenMetadataEntries"/> and <paramref name="readonlyMetadataEntries"/> parameters 
            allow to make some metadata entries indpendent from the metadata of the underlying variable.
            These parameters can be null and this will be considered as an empty collection.</para>
            <para>The name entry is always independent from the underlying metadata.</para>
            <para>
            See details in remarks for 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])">
            <summary>
            Creates a computational variable that calculates data values basing on indexes.
            </summary>
            <typeparam name="DataType">Resulting variable's data type.</typeparam>
            <param name="name">Name of a resulting variable.</param>
            <param name="indexTransform">The function that maps an index into a value.</param>
            <param name="dims">Dimensions of a resulting variable.</param>
            <returns>A computational variable.</returns>		
            <remarks>
            <para>
            The method creates an index-transform variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </para>
            <para>
            Length of a variable is equal to a length of the dimensions it depends on 
            (<paramref name="dims"/>). If there is no any other variable depending on the same
            dimensions, their lengths are 0.
            </para>
            <example>
            <code>
            DataSet ds = . . .;
            
            Variable&lt;double&gt; var = ds.AddVariable&lt;double&gt;("var", new double[] { 3.0, 3.1, 2.9 }, "x");
            Variable&lt;int&gt; trvar = ds.CreateIndexTransformVariable&lt;int&gt;(
            	"transform", indices =&gt; 2 * indices[0] + 1, "x");
            	
            int[] data = (int[])trvar.GetData(); // data: { 1, 3, 5 } 
            </code>
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CreateRangeVariable(System.String,System.Int32,System.String)">
            <summary>
            Creates one-dimensional range variable.
            </summary>
            <param name="name">Name of a variable.</param>
            <param name="origin">Starting value.</param>
            <param name="dim">Dimension it depends on.</param>
            <returns>A range variable.</returns>
            <remarks>
            <para>The method creates one-dimensional computational variable and adds it to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            The variable contains data starting with <paramref name="origin"/> and increased by 1
            with their index increasing.
            </para>
            <para>
            Length of a variable is equal to a length of the dimension it depends on 
            (<paramref name="dim"/>). If there is no any other variable depending on the same
            dimension, its length is 0.
            </para>
            <example>
            <code>
            DataSet ds = . . .;
            
            Variable&lt;double&gt; var = ds.AddVariable&lt;double&gt;("var", new double[] { 3.0, 3.1, 2.9 }, "x");
            Variable&lt;int&gt; range = ds.CreateRangeVariable("range", 100, "x");
            int[] data = (int[])range.GetData(); // data: { 100, 101, 102 } 
            </code>
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.CreateIndexTransformVariable``1(System.String,System.Func{System.Int32[],``0},System.String[])"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Finalize">
            <summary>
            Finalizes DataSet instance.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Dispose">
            <summary>
            Disposes the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            <para>
            If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, that is to be disposed, has changes, the <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/> method is called
            to cancel proposed changes.
            </para>
            <para>
            It is very important to dispose the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> when there is no need in it anymore.
            At disposal, the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> can free locked resources and unmanaged memory, if required.
            </para>
            <para>
            If the disposing <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has incoming references (see also <see cref="P:Microsoft.Research.Science.Data.DataSet.IsLinked"/>),
            all <see cref="T:Microsoft.Research.Science.Data.DataSet"/>s, referring it, will be disposed, too. 
            In contrast, referred <see cref="T:Microsoft.Research.Science.Data.DataSet"/>s are not affected by this disposal.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Dispose(System.Boolean)">
            <summary>
            Disposes the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <param name="disposing">True, if the method is called from user's code; false, if called from finalizer.</param>
            <remarks>
            <para>
            If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, that is to be disposed, has changes, the <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/> method is called
            to cancel proposed changes.
            </para>
            <para>
            It is very important to dispose the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> when there is no need in it anymore.
            At disposal, the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> can free locked resources and unmanaged memory, if required.
            </para>
            <para>
            If the disposing <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has incoming references (see also <see cref="P:Microsoft.Research.Science.Data.DataSet.IsLinked"/>),
            all <see cref="T:Microsoft.Research.Science.Data.DataSet"/>s, referring it, will be disposed, too. 
            In contrast, referred <see cref="T:Microsoft.Research.Science.Data.DataSet"/>s are not affected by this disposal.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetInnerChanges">
            <summary>
            Gets the inner representation of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>'s changes.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ClearChanges">
            <summary>
            Clears local changes of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            Clears local changes of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> (i.e. makes <see cref="P:Microsoft.Research.Science.Data.DataSet.HasChanges"/> equal to false),
            including changes of its variables.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ToString">
            <summary>
            Returns a string representation of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <returns>A string describing the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>
            The result of the <see cref="M:Microsoft.Research.Science.Data.DataSet.ToString"/> looks like the following sample text:
            </para>
            <example>
            msds:nc?file=C:\ScientificDataSet\Data\air.sig995.2007.nc
            air.sig995.2007 [1]
            DSID: f1969410-8896-4ab8-bec5-7150af1db2ca
            [4] air of type Int16 (time:1460) (lat:73) (lon:144)
            [3] time of type Double (time:1460)
            [2] lon of type Single (lon:144)
            [1] lat of type Single (lat:73)
            </example>
            <para>
            The first line shows standard <see cref="P:Microsoft.Research.Science.Data.DataSet.URI"/>. It consists of mandatory URI schema ‘msds’ and 
            SDS provider name ‘nc’ followed by optional provider parameters. 
            </para>
            <para>
            The second line starts with optional <see cref="P:Microsoft.Research.Science.Data.DataSet.Name"/>.
            Integer number at the end of the line is the <see cref="P:Microsoft.Research.Science.Data.DataSet.Version"/> number. 
            Each time <see cref="T:Microsoft.Research.Science.Data.DataSet"/> commits changes requested by a user, it increments a version number. 
            If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is modified (see <see cref="P:Microsoft.Research.Science.Data.DataSet.HasChanges"/>), an asterisk <c>‘*’</c> is shown
            after the version number.
            </para>
            <para>
            The third line contains unique identifier of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance 
            (see <see cref="P:Microsoft.Research.Science.Data.DataSet.DataSetGuid"/>).
            </para>
            <para>
            Below goes a list of variables. 
            Each variable summary shows variable <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/>, <see cref="P:Microsoft.Research.Science.Data.Variable.Name"/>, 
            <see cref="P:Microsoft.Research.Science.Data.Variable.TypeOfData"/> and shape (see also <see cref="P:Microsoft.Research.Science.Data.Variable.Dimensions"/>). 
            Variable shape includes one dimension for vectors, two dimensions for matrices etc. 
            Variable summary shows both name and length for each of the dimensions.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetHashCode">
            <summary>
            Returns the hash code for this instance.
            </summary>
            <returns>The hash code for this instance.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.SetCompleteReadOnly">
            <summary>
            Sets the read-only flag for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and all its variables.
            </summary>
            <remarks>
            If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has changes, the method will throw <see cref="T:System.NotSupportedException"/>.
            After the flag is set, no modifications are allowed to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </remarks>
            <exception cref="T:System.NotSupportedException"><see cref="T:Microsoft.Research.Science.Data.DataSet"/> has changes</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.IsSupported(System.Type)">
            <summary>Checks whether specified type is supported according to <see cref="T:Microsoft.Research.Science.Data.DataSet"/> specification.</summary>
            <param name="type">Type to check.</param>
            <returns>True, if <see cref="T:Microsoft.Research.Science.Data.DataSet"/> supports variables of this type; false, otherwise.</returns>
            <remarks>
            For a complete list of supported types, see remarks for the <see cref="T:Microsoft.Research.Science.Data.Variable"/> class.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.CopyAll(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Copies the dataset <paramref name="source"/> to the dataset <paramref name="destination"/>.
            </summary>
            <param name="source">The original dataset.</param>
            <param name="destination">The destination dataset.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Clone(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Creates a deep copy of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance.
            </summary>
            <param name="targetUri">URI of the output <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
            <returns>New <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance that contains copy of the input <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>
            Opens the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> using given <paramref name="targetUri"/> and copies the current <see cref="T:Microsoft.Research.Science.Data.DataSet"/> content
            into the output <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, restoring the structure and adding variables by value (see
            <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByValue(Microsoft.Research.Science.Data.Variable)"/>) to the target <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            The resulting <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is committed. Note: it is required to dispose the returned DataSet;
            if you don't need the instance, you should dispose it immediately:
            <code>ds.Clone("copy.csv").Dispose();</code>.
            </para>
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> must not be changed during cloning.
            </para>
            <example>
            The following example constructs a read-only <see cref="T:Microsoft.Research.Science.Data.DataSet"/> based on a HTTP resource.
            Then the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is cloned into a <see cref="T:MemoryDataSet"/> which then
            can be modified.
            <code> 
            DataSet ds1 = DataSet.Open("msds:csv?file=http://arca7.wdcb.ru/DataExplorer/data.csv&amp;inferDims=true");
            DataSetUri uri = DataSetUri.Create("msds:memory");
            ... // It is possible to change properties of the uri
            DataSet ds2 = ds1.Clone(uri);
            
            ds1.Dispose();
            ds2.Dispose();
            </code>
            </example>
            <para>
            About DataSet URI see also remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Clone(System.String)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The provider is not registered.</exception>
            <exception cref="T:System.ArgumentException"></exception>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Clone(System.String)">
            <summary>
            Creates a deep copy of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance.
            </summary>
            <param name="targetUri">URI of the output <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</param>
            <returns>New <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance that contains copy of the input <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            See remarks for the <see cref="M:Microsoft.Research.Science.Data.DataSet.Clone(Microsoft.Research.Science.Data.DataSetUri)"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Clone(Microsoft.Research.Science.Data.DataSetUri)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The provider is not registered.</exception>
            <exception cref="T:System.ArgumentException"></exception>
            <exception cref="T:System.ArgumentNullException"></exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetEnumerator">
            <summary>
            Gets an enumerator for the committed variables collection.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.System#Collections#IEnumerable#GetEnumerator">
            <summary>
            Gets an enumerator for the committed variables collection.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Range(System.Int32)">
            <summary>
            Gets the range of a single index.
            </summary>
            <param name="index">An index.</param>
            <returns>A range of a single index.</returns>
            <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Range(System.Int32,System.Int32)">
            <summary>
            Gets the range of indices from "from" up to "to". 
            </summary>
            <param name="from">Origin index of the range.</param>
            <param name="to">Last index of the range.</param>
            <returns>A range containing given interval.</returns>
            <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Range(System.Int32,System.Int32,System.Int32)">
            <summary>
            Gets the range of indices from "from" up to "to". 
            </summary>
            <param name="from">Origin index of the range.</param>
            <param name="step">Range stride.</param>
            <param name="to">Last index of the range.</param>
            <returns>A stridden range.</returns>
            <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.FromToEnd(System.Int32)">
            <summary>
            Gets the range of indices from <paramref name="from"/> up to the maximum index for a given dimension.
            </summary>
            <param name="from">Origin index of the range.</param>
            <returns>An unlimited range.</returns>
            <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.FromToEnd(System.Int32,System.Int32)">
            <summary>
            Gets the range of indices from <paramref name="from"/> up to the maximum index for a given dimension.
            </summary>
            <param name="from">Origin index of the range.</param>
            <param name="step">Range stride.</param>
            <returns>An unlimited range.</returns>
            <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)">
            <summary>
            Gets the range of a single index to choose and reduce a dimension.
            </summary>
            <param name="index">An index.</param>
            <returns>A range of a single index.</returns>
            <remarks>
            <para>
            The rank of the resulting array is less than the rank of the variable 
            the data is read from or written to. 
            Thus <c>ds.Get&lt;double&gt;("mat", i, j)</c> is equivalent to 
            <c>ds.Get&lt;double&gt;("mat", DataSet.ReduceDim(i), DataSet.ReduceDim(j))</c>.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])">
             <summary>
             Gets data from several variables atomically with a guarantee that the data belong to the same DataSet version.
             </summary>
             <param name="requests">Data requests describing what data is to be returned.</param>
             <returns>All requested data.</returns>
             <remarks>
             <para>
             The problem is to get consistent data from one version of a DataSet.
             A typical program flow for working with data from several related variables 
             involve several consequent calls of the <see cref="M:Microsoft.Research.Science.Data.Variable.GetData"/>. 
             If the data set is being changed in the background by another process, 
             the data returned may come from different versions (see <see cref="P:Microsoft.Research.Science.Data.DataSet.Version"/>). 
             This is inappropriate for many applications.
             </para>
             <para>
             The solution is to use <see cref="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])"/> method which performs several
             <see cref="M:Microsoft.Research.Science.Data.Variable.GetData"/> operations atomically and guarantees that 
             all returned arrays belong to the same DataSet version.
             </para>
             <example>
             The following example gets data from two variables atomically:
             <code>
             DataSet ds = . . .;
             var v1 = ds.AddVariable&lt;string&gt;("v1", "x");
             var v2 = ds.AddVariable&lt;double&gt;("v2", "x", "y");
             
             . . .
             
             MultipleDataResponse response = ds.GetMultipleData(
            			// requesting 10 first elements from "v1":
            			DataRequest.GetData(v1, null, new int[1] { 10 }), 
            			// requesting 10x20 first elements from "v2":
            			DataRequest.GetData(v2, null, new int[2] { 10, 20 }));
            
             DataResponse r1 = response[v1.ID];
             DataResponse r2 = response[v2.ID];
            	
             // All the data belong to the version "response.Version".
             string[] d1 = (string[]) r1.Data;
             double[,] d2 = (double[,]) r2.Data;
             </code>
             </example>
             </remarks>
             <seealso cref="T:Microsoft.Research.Science.Data.DataRequest"/>
             <seealso cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/>
             <exception cref="T:System.ArgumentNullException"><paramref name="requests"/> or one of its elements is null.</exception>
             <exception cref="T:System.ArgumentException">One of requested variable belongs to another DataSet.</exception>
             <exception cref="T:System.ApplicationException">Version of the DataSet unexpectedly changed during getting data.</exception>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Metadata">
             <summary>
             Gets the metadata attached to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
             </summary>
             <remarks>
             <para>
             The property gets the global <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> attached to the DataSet.
             </para>
             <example>
             The following example creates a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and fills its global metadata with different
             types of values;
             then it creates a <see cref="T:Microsoft.Research.Science.Data.Variable"/>, puts data and sets metadata of the variable.
             <code>
             string[] strings = new string[] { "a", "b", "c" };
            	DateTime[] dates = new DateTime[] { DateTime.MinValue, DateTime.Today };
            
            	using (DataSet ds = DataSet.Open("sample.csv?openMode=create"))
            	{
            		ds.IsAutocommitEnabled = false;
            
            		// Updating global metadata of the data set:
            		ds.Metadata["custom"] = "Custom Metadata";
            		ds.Metadata["strings"] = strings;
            		ds.Metadata["dates"] = dates;
            		ds.Metadata["empty"] = new int[0];
            
            		// Adding a variable
            		var var = ds.AddVariable&lt;string&gt;("var", "x");
            		// Updating local metadata of the variable
            		var.Metadata["strings"] = strings;
            		var.PutData(strings);
            
            		// Committing all changes.
            		ds.Commit();
            	}
             </code>
             </example>
             <para>
             To developers of a custom <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider:
             internally the global metadata dictionary is stored as a zero-rank variable of type 
             <see cref="T:Microsoft.Research.Science.Data.EmptyValueType"/> with <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> equal to 
             <see cref="F:Microsoft.Research.Science.Data.DataSet.GlobalMetadataVariableID"/>.
             Creating of such variable can be delegated to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> constructor
             or performed by the custom provider itself 
             (see constructor <see cref="M:Microsoft.Research.Science.Data.DataSet.#ctor(System.Boolean,System.Boolean)"/>).
             The <see cref="P:Microsoft.Research.Science.Data.DataSet.Metadata"/> property just refers the dictionary of that variable.
             Also the variable is hidden and <see cref="T:Microsoft.Research.Science.Data.ReadOnlyVariableCollection"/>
             doesn't include it in a common enumeration list and <see cref="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Count"/>
             value. To enumerate through all variables, use <see cref="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.All"/> property.
             Nevertheless, the variable is presented in the <see cref="T:Microsoft.Research.Science.Data.DataSetSchema"/>.
             </para>
             </remarks>
             <seealso cref="P:Microsoft.Research.Science.Data.Variable.Metadata"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled">
             <summary>
             Gets or sets the value indicating whether the autocommit is enabled.
             </summary>
             <remarks>
             <para>
             The property is initialized with <c>true</c> at the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> construction.
             Please consider following remarks and think about turning it off.
             </para>
             <para>
             The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> uses two-phase transaction mechanism to commit accumulated changes.
             It is described in remarks for the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method.
             But the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> enables an option named "autocommitting" to simplify
             a code working with a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>. 
             If the <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/> property is <c>true</c>,
             an instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider tries to commit itself on every
             change. Therefore, if the proposed schema satisfies all constraints, the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> becomes
             committed; otherwise, it continues to be modifed until a change satisfies constraints.
             </para>
             <para>
             The use of the autocomitting option is convenient but less effecient comparing to
             manual committing. The reason is that manual commit allows to save a number of accumulated changes
             as one and once; autocommitting may lead to series of saving, each of them is usually
             an expensive operation. 
             This can significantly decrease performance, depending on a particular provider type.
             Also autocomitting can prevent from using <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/> in some cases
             as it makes it possible to roll back only changes accumulated since last erroneous change,
             i.e. change that broke constraints (see example below for demonstration).
             Therefore, autocomitting should be turned off for complex tasks.
             </para>
             <para>
             When using autocomitting, there is a way to find out whether the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is committed or not
             after any change: it is the <see cref="P:Microsoft.Research.Science.Data.DataSet.HasChanges"/> property that should be checked 
             (see the example below). If the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is not committed, but expected to be,
             it is still possible to get the problem description by an explicit call of the
             <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method and catching an exception.
             </para>
             <example>
             <code>
            	int[] a1 = new int[] { 1, 2, 3 };
            	int[] a2 = new int[] { 4, 5, 6 };
            	string[] a3 = new string[] { "1", "2", "3" };
            
            	using (DataSet ds = DataSet.Open("sample.csv?openMode=createNew"))
            	{
            		ds.IsAutocommitEnabled = true;
            
            		var v1 = ds.AddVariable&lt;int&gt;("v1", "1");				
            		Assert.IsFalse(ds.HasChanges);	// ds is committed		
            		// Note: each commit leads to saving all changes into the underlying storage!
            
            		var v2 = ds.AddVariable&lt;int&gt;("v2", "1");
            		Assert.IsFalse(ds.HasChanges);	// ds is committed 
            
            		var v3 = ds.AddVariable&lt;string&gt;("v3", a3, "1");
            		Assert.IsTrue(ds.HasChanges);	// ds isn't committed since v1,v2,v3 depend on "1"
            										// but shape of v1 and v2 is 0, and shape of v3 is 3.
            
            		v1.PutData(a1);					// ds still is not committed: shape of v2 is still 0,
            		Assert.IsTrue(ds.HasChanges);   // all changes are accumulated in a proposed schema.
            		v2.PutData(a2);					// ds is committed: v1,v2 and v3 have same shape
            		Assert.IsFalse(ds.HasChanges);
            
            		v1.Metadata["Units"] = "Days";  // ds is committed (metadata of v1 updated)
            		Assert.IsFalse(ds.HasChanges);
            
            		var cs = ds.CreateCoordinateSystem("cs", v3);
            		Assert.IsFalse(ds.HasChanges);  // ds is committed: cs with the single axis v3 is added
            
            		v1.AddCoordinateSystem(cs);		// ds is committed: 
            		Assert.IsFalse(ds.HasChanges);  // cs added to v1
            
            		var v4 = ds.AddVariable&lt;string&gt;("v4", "2");
            		Assert.IsFalse(ds.HasChanges);  // ds is committed: new variable v4 depending on "2"
            
            		var cs2 = ds.CreateCoordinateSystem("cs2", v4);
            		Assert.IsFalse(ds.HasChanges);	// ds is committed: new cs with an axis v4.
            		v1.AddCoordinateSystem(cs2);	// ds isn't committed: 
            		Assert.IsTrue(ds.HasChanges);	//	v1 and c2 depend on different dimensions
            
            		// Note: now we already cannot rollback adding of "cs2"!
            		ds.Rollback();	// rolling back only adding of cs2 into v4
            		Assert.IsFalse(ds.HasChanges);	// ds has no changes.		
            	}
             </code>
             </example>
             </remarks>
             <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.AutocommitEnabled">
            <summary>
            Gets or sets the value indicating whether the autocommit is enabled.
            </summary>
            <remarks>
            <para>
            The property is obsolete. Use the propery <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/> instead.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Name">
            <summary>
            Gets or sets the name of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            <para>
            This property refers the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> <see cref="P:Microsoft.Research.Science.Data.DataSet.Metadata"/> entry named 
            <see cref="F:Microsoft.Research.Science.Data.MetadataDictionary.KeyForName"/>.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.DataSetGuid">
            <summary>
            Gets the globally unique identifier of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Version">
            <summary>
            Gets the current version of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            After a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance is created, its <see cref="P:Microsoft.Research.Science.Data.DataSet.Version"/> is greater than zero.
            On every successful commit the <see cref="P:Microsoft.Research.Science.Data.DataSet.Version"/> number increases by 1.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.IsReadOnly">
            <summary>
            Gets the value indicating whether the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is read-only.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.ReadOnly">
            <summary>
            Gets the value indicating whether the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is read-only.
            </summary>
            <remarks>
            <para>
            The property is obsolete. Use the propery <see cref="P:Microsoft.Research.Science.Data.DataSet.IsReadOnly"/> instead.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.URI">
            <summary>
            Gets the URI identifying the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            More about DataSet URIs read in remarks for the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> class.
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.ConstructionString">
            <summary>
            Gets the URI identifying the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>The property is obsolete. Use <see cref="P:Microsoft.Research.Science.Data.DataSet.URI"/> instead.</remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.IsDisposed">
            <summary>
            Gets the value indicating whether the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has been disposed or not.
            </summary>
            <remarks>
            Disposed <see cref="T:Microsoft.Research.Science.Data.DataSet"/> throws <see cref="T:System.ObjectDisposedException"/> on every 
            invoke of its API.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Dispose"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Item(System.Int32)">
            <summary>
            Gets the variable with the specified index.
            </summary>
            <param name="index">Zero-based index of the variable to get.</param>
            <returns>The variable with specified index.</returns>
            <remarks>This is a short form of the <c>DataSet.Variables[int index]</c> property.</remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.Variables"/>
            <seealso cref="T:Microsoft.Research.Science.Data.ReadOnlyVariableCollection"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Item(System.String)">
            <summary>
            Gets the first variable with the specified name.
            </summary>
            <param name="variableName">The name of the variable to get.</param>
            <returns>The first variable with the specified name.</returns>
            <remarks>This is a short form of the <c>Variables[string name]</c> property.</remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.Variables"/>
            <seealso cref="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Item(System.String)"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.IsLinked">
            <summary>
            Gets the value indicating whether the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has incoming or outcoming references
            to variables from another <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.GetLinkedDataSets"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference``1(Microsoft.Research.Science.Data.Variable{``0},System.String[])"/>
        </member>
        <member name="E:Microsoft.Research.Science.Data.DataSet.RolledBack">
            <summary>
            Occurs when the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is rolled back.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.DataSet.Changed">
            <summary>
            Occurs on every change of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.DataSet.Committing">
            <summary>
            Occurs when the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is committing.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.DataSet.Committed">
            <summary>
            Occurs when the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> has been committed successully.
            </summary>
            <remarks>
            <para>
            The event is fired within the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> or <see cref="M:Microsoft.Research.Science.Data.DataSet.TryCommit"/>
            methods, if the commit succeeded. Therefore, the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> returns 
            only after handlers of the event finish.
            </para>
            <para>
            Please note, if within a handler of the <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> 
            the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is modified and the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> invoked once again,
            the endless recursion can happen.
            </para>
            </remarks>
        </member>
        <member name="E:Microsoft.Research.Science.Data.DataSet.Changing">
            <summary>
            Occurs when the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is changing.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Variables">
            <summary>
            Gets the read-only collection of <see cref="T:Microsoft.Research.Science.Data.Variable"/> objects.
            </summary>
            <remarks>
            <para>
            The property returns the read-only collection of variables, 
            including both committed and proposed variables
            at the moment of the property access. In other words, if a variable is added
            to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> right after the collection is returned by this property,
            new variable is not contained in the collection.
            </para>
            <para>
            The returned collection <see cref="T:Microsoft.Research.Science.Data.ReadOnlyVariableCollection"/> provides special logic to 
            work separately with different schema versions. By default, without an explicit specification,
            the collection provides an access to the committed version only.
            </para>
            <para>
            The following example iterates through all variables of a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> 
            being loaded from sample.csv file and prints information about the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> to the console:
            </para>
            <example>
            <code>
            using(DataSet sds = DataSet.Open("sample.csv"))
            {
                Console.WriteLine ("ScientficDataSet " + sds.Name + (HasChanges ? "*" : "") + " contents: ");
            
                Console.WriteLine (" Variables:");
                foreach (Variable v in sds.Variables)
                {
            	    Console.WriteLine (v.ToString());
                }
            }
            </code>
            </example>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
            <seealso cref="T:Microsoft.Research.Science.Data.ReadOnlyVariableCollection"/>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.CoordinateSystems"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>		
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.SupportsCoordinateSystems">
            <summary>
            Gets the value, indicating whether the data set supports for coordinate systems.
            </summary> 
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.CoordinateSystems">
            <summary>
            Gets the collection of coordinate systems attached to the DataSet.
            </summary>
            <remarks>
            <para>Collection contains all coordinate system of the data set, including 
            committed and proposed coordinate systems, but the simple by name indexer of the 
            <see cref="T:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase"/> collection looks up among committed coordinate
            systems only. To get a coordinate system from a particular schema version use special indexer 
            <see cref="P:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/> collection:
            </para>
            <example>
            <code>
            CoordinateSystem cs = dataSet.CoordinateSystems["cs", SchemaVersion.Recent];
            </code>
            </example>
            <para>
            There is a method <see cref="M:Microsoft.Research.Science.Data.DataSet.GetCoordinateSystems(Microsoft.Research.Science.Data.SchemaVersion)"/>
            that returns a collection of coordinate systems for a given schema version only.
            </para>
            <para>
            The following example iterates through all coordinate systems of a data set 
            being loaded from sample.csv file and prints information about the data set to the console:
            </para>
            <example>
            <code>
            DataSet sds = new CsvDataSet("sample.csv");
            
            Console.WriteLine ("ScientficDataSet " + sds.Name +
            (HasChanges ? "*" : "") + " contents: ");
            
            Console.WriteLine (" Coordinate Systems:");
            foreach (CoordinateSystem s in sds.CoordinateSystems)
            {
            	Console.WriteLine (s.ToString());
            }
            </code>
            </example>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.CoordinateSystem"/>
            <seealso cref="T:Microsoft.Research.Science.Data.CoordinateSystemCollectionBase"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.GetCoordinateSystems(Microsoft.Research.Science.Data.SchemaVersion)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.Variables"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Dimensions">
            <summary>
            Gets the list of dimensions of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            </summary>
            <remarks>
            <para>The property returns committed dimensions.
            To get proposed dimensions, use <see cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/> method.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.HasChanges">
            <summary>
            Gets the value indicating whether the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is modified.
            </summary>
            <remarks>
            The <see cref="T:Microsoft.Research.Science.Data.DataSet"/> is modified, if its schema or data are changed.
            To commit changes, use <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method.
            To rollback changes, use <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/> method.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSet.Changes">
            <summary>
            Represents proposed version of the <see cref="P:Microsoft.Research.Science.Data.DataSet.Changes.DataSet"/>.
            </summary>
            <remarks>
            The <see cref="T:Microsoft.Research.Science.Data.DataSet.Changes"/> instance accumulates changes as a user
            modifies the <see cref="P:Microsoft.Research.Science.Data.DataSet.Changes.DataSet"/>. As a result, it contains proposed version of the 
            <see cref="P:Microsoft.Research.Science.Data.DataSet.Changes.DataSet"/>. Its schema may not satisfy <see cref="P:Microsoft.Research.Science.Data.DataSet.Changes.DataSet"/> constraints.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSet.Changes.varChanges">
            <summary>Maps variable ID to Variable.Changes.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Changes.#ctor(Microsoft.Research.Science.Data.DataSet,System.Int32,Microsoft.Research.Science.Data.DataSetSchema,Microsoft.Research.Science.Data.VariableCollection,Microsoft.Research.Science.Data.CoordinateSystemCollection,Microsoft.Research.Science.Data.ChangesetSource)">
            <summary>
            Initializes an instance of the class.
            </summary>
            <param name="dataSet"></param>
            <param name="version"></param>
            <param name="initialSchema"></param>
            <param name="variables"></param>
            <param name="coordinateSystems"></param>
            <param name="source"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Changes.GetVariableChanges(System.Int32)">
            <summary>
            Returns the changes for a given variable (null if it has no changes).
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Changes.UpdateChanges(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            Updates the collection of changes for the given variable with specified change set.
            </summary>
            <param name="changes"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Changes.Clone">
            <summary>
            Makes a shallow copy of the changes.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSet.Changes.GetChangeset">
            <summary>
            Gets the changes description for a public demonstration.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Changes.DataSetGuid">
            <summary>
            Gets the Guid of the changed DataSet.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Changes.DataSet">
            <summary>
            Gets the DataSet instance being changed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Changes.Version">
            <summary>
            Gets the proposed version for the changeset.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Changes.InitialSchema">
            <summary>
            Currently committed schema of the data set.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Changes.Variables">
            <summary>
            Gets the updated collection of variables including unmodified, updated and added variables.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Changes.CoordinateSystems">
            <summary>
            Gets the updated collection of coordinate systems including unmodified and updated coordinate systems.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSet.Changes.ChangesetSource">
            <summary>
            Gets the source of the changeset: it can be either local or remote or both.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.MultipleDataResponse">
            <summary>
            Contains reponses on multiple data requests.
            </summary>
            <remarks>
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/> class contains responses for each data request
            specified in the <see cref="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])"/> method.
            Each response is represented by a <see cref="T:Microsoft.Research.Science.Data.DataResponse"/> class instance.
            The class also contains a <see cref="P:Microsoft.Research.Science.Data.MultipleDataResponse.Version"/> number of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
            the data is taken from. 
            </para>
            <para>
            See remarks for the <see cref="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])"/> method.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MultipleDataResponse.op_Implicit(Microsoft.Research.Science.Data.MultipleDataResponse)~Microsoft.Research.Science.Data.DataResponse[]">
            <summary>
            Converts the <see cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/> into an array <c>DataResponse[]</c>.
            </summary>
            <param name="response">Response to convert.</param>
            <returns>An array of <see cref="T:Microsoft.Research.Science.Data.DataResponse"/>.</returns>
            <remarks>
            <para>The conversion is to be used when the multiple data request
            contains several requests for one variable and thus
            the actual responses cannot be retrieved through the variable ID.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MultipleDataResponse.ToDataResponses">
            <summary>
            Gets an array of <c>DataResponse[]</c>.
            </summary>
            <returns>An array of <see cref="T:Microsoft.Research.Science.Data.DataResponse"/>.</returns>
            <remarks>
            <para>The conversion is to be used when the multiple data request
            contains several requests for one variable and thus
            the actual responses cannot be retrieved through the variable ID.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MultipleDataResponse.Version">
            <summary>
            Gets the version of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> the data is taken from.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MultipleDataResponse.Count">
            <summary>
            Gets the number of individual responses contained in the <see cref="T:Microsoft.Research.Science.Data.MultipleDataResponse"/>.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MultipleDataResponse.Item(System.Int32)">
            <summary>
            Gets the response for the variable with the given <paramref name="variableID"/>.
            </summary>
            <param name="variableID">The <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable the data is taken from.</param>
            <returns>The response for the particular variable.</returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataRequest">
            <summary>
            Describes a request for data of a variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataRequest.GetData(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Gets the request for the entire data of the variable <paramref name="var"/>.
            </summary>
            <param name="var">The variable to get data from.</param>
            <returns>Request for data.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataRequest.GetData(Microsoft.Research.Science.Data.Variable,System.Int32[],System.Int32[])">
            <summary>
            Gets the request for the particular data from the variable <paramref name="var"/>.
            </summary>
            <param name="var">The variable to get data from.</param>
            <param name="origin">The origin of the requested data.</param>
            <param name="shape">The shape of the requested data.</param>
            <returns>Request for data.</returns>
            <remarks>
            <para>
            If <paramref name="origin"/> is <c>null</c>, all zeros are inferred.
            If <paramref name="shape"/> is <c>null</c>, as much as available data is to
            be requested.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataRequest.GetData(Microsoft.Research.Science.Data.Variable,System.Int32[],System.Int32[],System.Int32[])">
            <summary>
            Gets the request for the particular data  fromt the variable <paramref name="var"/>.
            </summary>
            <param name="var">The variable to get data from.</param>
            <param name="origin">The origin of the requested data.</param>
            <param name="stride">The steps to subsample the data.</param>
            <param name="shape">The shape of the requested data.</param>
            <returns>Request for data.</returns>
            <remarks>
            <para>
            If <paramref name="origin"/> is <c>null</c>, all zeros are inferred.
            If <paramref name="stride"/> is <c>null</c>, no stride is done (i.e. steps equal 
            to <c>1</c> are to be used).
            If <paramref name="shape"/> is <c>null</c>, as much as available data is to
            be requested.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataRequest.Variable">
            <summary>
            Gets the variable that is to be requested.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataRequest.Origin">
            <summary>
            Gets the origin of requested data.
            </summary>
            <remarks>
            <para>Null means all zeros.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataRequest.Stride">
            <summary>
            Gets the stride of requested data.
            </summary>
            <remarks>
            <para>Null means "no stride", i.e. an array of <c>1</c>.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataRequest.Shape">
            <summary>
            Gets the shape of requested data.
            </summary>
            <remarks>
            <para>Null means "as much as available".</para>
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataResponse">
            <summary>
            Contains response on a request for a variable data.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataResponse.DataRequest">
            <summary>
            Gets the request for this response.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataResponse.Data">
            <summary>
            Gets the data contained in the response.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetChangeset">
            <summary>
            Represents changes in a DataSet.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetChangeset.GetChanges(System.Int32)">
            <summary>
            Returns changes for the variable with given id.
            If this variable hasn't been updated, returns null.
            </summary>
            <param name="varId"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetChangeset.ToString">
            <summary>
            Returns brief desrcription of the changeset.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangeset.DataSet">
            <summary>
            Gets the changed DataSet instance.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangeset.ChangesetSource">
            <summary>
            Gets the source of the changeset: it can be either local or remote or both.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangeset.ProposedVersion">
            <summary>
            Get the version number proposed for this changeset.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangeset.AddedVariables">
            <summary>
            Gets an array of added variables.
            </summary>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetChangeset.UpdatedVariables"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangeset.UpdatedVariables">
            <summary>
            Gets an array of updated variables.
            </summary>
            <remarks>
            The array returned by this property doesn't include added variables
            even if they are updated just after they have been added. 
            To get an array of added variables, see property <see cref="P:Microsoft.Research.Science.Data.DataSetChangeset.AddedVariables"/>.
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetChangeset.AddedVariables"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangeset.AllAffectedVariables">
            <summary>
            Gets an array of variables affected by the DataSet changes.
            </summary>
            <remarks>
            The array returned by this property includes both added variables (see
            <see cref="P:Microsoft.Research.Science.Data.DataSetChangeset.AddedVariables"/>) and updated variables (<see cref="P:Microsoft.Research.Science.Data.DataSetChangeset.UpdatedVariables"/>).
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetChangeset.AddedVariables"/>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetChangeset.UpdatedVariables"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangeset.AddedCoordinateSystems">
            <summary>
            Gets an array of new coordinate systems.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetChangeAction">
            <summary>
            Kind of changes in a data set.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSetChangeAction.RenameOfDataSet">
            <summary>New name is given to a data set.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSetChangeAction.NewVariable">
            <summary>New variable is added to a data set.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSetChangeAction.UpdateOfVariable">
            <summary>Variable is changed.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSetChangeAction.NewCoordinateSystem">
            <summary>New coordinate system is added.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ChangesetSource">
            <summary>
            Describes the source of the changeset.
            </summary>
            <remarks>
            Value <see cref="F:Microsoft.Research.Science.Data.ChangesetSource.Remote"/> can be used by proxy DataSet 
            if it receives a changeset from its storage.
            Furthermore, both values can be used in a combination (via bitwise AND operation) 
            when proxy combines changes received from storage and induced through local DataSet API.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ChangesetSource.Local">
            <summary>The changeset contains changes induced locally.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ChangesetSource.Remote">
            <summary>The changeset contains changes induced remotely.</summary>
            <remarks>
            This value can be used, for example, by proxy DataSet if it receives a changeset from its storage service.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ChangesetSource.LocalAndRemote">
            <summary>The changeset contains both local and remote changes.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetCommittingEventArgs.Changes">
            <summary>
            Gets the changes to commit.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetCommittingEventArgs.DataSet">
            <summary>
            Gets the data set that is being committed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetCommittingEventArgs.Cancel">
            <summary>
            Gets or sets the value which indicates whether to cancel the commit or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetRolledBackEventArgs.DataSet">
            <summary>
            Gets the DataSet that has just been rolled back.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetCommittedEventHandler">
            <summary>
            The delegate for DataSet.Committed event handlers.
            </summary>
            <param name="sender">The committed data set.</param>
            <param name="e">Contains the description of the succeeded committing procedure.</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetCommittedEventArgs">
            <summary>
            Contains the description of the succeeded committing procedure.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetCommittedEventArgs.#ctor(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.DataSetChangeset,Microsoft.Research.Science.Data.DataSetSchema)">
            <summary>
            Initializes the instance of the class.
            </summary>
            <param name="sds">The committed data set.</param>
            <param name="changes">Committed changes.</param>
            <param name="committedSchema">DataSet schema after commit</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetCommittedEventArgs.Changes">
            <summary>
            Gets just committed changes.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetCommittedEventArgs.DataSet">
            <summary>
            Gets the DataSet that has just been committed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetCommittedEventArgs.CommittedSchema">
            <summary>Gets copy of DataSet schema after commit</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangedEventArgs.Changes">
            <summary>
            Gets the recent changes in the data set.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangedEventArgs.DataSet">
            <summary>
            Gets the DataSet that is changed (but not committed yet).
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangedEventArgs.Action">
            <summary>
            Gets the kind of the change.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangedEventArgs.Target">
            <summary>
            Get the target of the changes, its particular type depends on kind of the action.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangingEventArgs.DataSet">
            <summary>
            Gets the DataSet that is changed (but not committed yet).
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangingEventArgs.Action">
            <summary>
            Gets the kind of the change.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangingEventArgs.Target">
            <summary>
            Get the target of the changes, its particular type depends on kind of the action.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetChangingEventArgs.Cancel">
            <summary>
            Gets or sets the value which indicates whether to cancel the commit or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetLink.IsActive">
            <summary>
            Gets the value indicating that this reference has changes.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Dimension">
            <summary>
            Represents a dimension of a variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Dimension.#ctor(System.String,System.Int32)">
            <summary>
            
            </summary>
            <param name="name"></param>
            <param name="length"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Dimension.ToString">
            <summary>
            Represents the dimension as a text.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Dimension.GetHashCode">
            <summary>
            Returns the hash code for this instance.
            </summary>
            <returns>The hash code for this instance.</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Dimension.Name">
            <summary>
            Gets the name of the dimension.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Dimension.Length">
            <summary>
            Gets the length of the dimension.
            </summary>
            <remarks>
            This is a length of data of all variables depending on it, by the corresponding dimension.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DimensionList">
            <summary>
            List of dimensions.
            </summary>
            <seealso cref="T:Microsoft.Research.Science.Data.Dimension"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.#ctor">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.#ctor(System.Collections.Generic.IList{Microsoft.Research.Science.Data.Dimension})">
            <summary>
            
            </summary>
            <param name="dims"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.Add(Microsoft.Research.Science.Data.Dimension)">
            <summary>
            Adds a dimension to the list.
            </summary>
            <param name="dim"></param>
            <remarks>
            <para>
            If the dimension with the same name as the <paramref name="dim"/> is alredy
            contained in the list, and their lengths differ, then
            the length of the dimension with this name is reset to -1.
            No exception is thrown.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.FindIndex(System.String)">
            <summary>
            
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.AddRange(System.Collections.Generic.IList{Microsoft.Research.Science.Data.Dimension})">
            <summary>
            
            </summary>
            <param name="dims"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.IsSubsetOf(Microsoft.Research.Science.Data.DimensionList)">
            <summary>
            
            </summary>
            <param name="list"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.Contains(System.String)">
            <summary>
            
            </summary>
            <param name="dim"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.GetLength(System.String)">
            <summary>
            
            </summary>
            <param name="dim"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.AsStringArray">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.IndexOf(System.String)">
            <summary>
            
            </summary>
            <param name="dim"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.GetEnumerator">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.ToArray">
            <summary>
            Represents the list as an array.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.Clone">
            <summary>
            Makes a copy of the list.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.Equals(System.Object)">
            <summary>
            
            </summary>
            <param name="obj"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.GetHashCode">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.op_Equality(Microsoft.Research.Science.Data.DimensionList,Microsoft.Research.Science.Data.DimensionList)">
            <summary>
            
            </summary>
            <param name="dl1"></param>
            <param name="dl2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.op_Inequality(Microsoft.Research.Science.Data.DimensionList,Microsoft.Research.Science.Data.DimensionList)">
            <summary>
            
            </summary>
            <param name="dl1"></param>
            <param name="dl2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DimensionList.ToString">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DimensionList.Count">
            <summary>
            Gets the count of dimensions.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DimensionList.Item(System.Int32)">
            <summary>
            
            </summary>
            <param name="index"></param>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DimensionList.Item(System.String)">
            <summary>
            Gets the dimension by its name.
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ReadOnlyDimensionList">
            <summary>
            Read-only collection of dimensions.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.Contains(System.String)">
            <summary>
            
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.FindIndex(System.String)">
            <summary>
            Finds a dimension with the given <paramref name="name"/>.
            </summary>
            <param name="name"></param>
            <returns>The index of the dimension in the list if found; otherwise, -1.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.AsNamesArray">
            <summary>
            Returns an array of names of dimensions.
            </summary>
            <remarks></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.AsShape">
            <summary>
            Returns the shape as an array of lengths.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.Equals(System.Object)">
            <summary>
            
            </summary>
            <param name="obj"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.GetHashCode">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.op_Equality(Microsoft.Research.Science.Data.ReadOnlyDimensionList,Microsoft.Research.Science.Data.ReadOnlyDimensionList)">
            <summary>
            
            </summary>
            <param name="dl1"></param>
            <param name="dl2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.op_Inequality(Microsoft.Research.Science.Data.ReadOnlyDimensionList,Microsoft.Research.Science.Data.ReadOnlyDimensionList)">
            <summary>
            
            </summary>
            <param name="dl1"></param>
            <param name="dl2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.op_Equality(Microsoft.Research.Science.Data.DimensionList,Microsoft.Research.Science.Data.ReadOnlyDimensionList)">
            <summary>
            
            </summary>
            <param name="dl1"></param>
            <param name="dl2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.op_Inequality(Microsoft.Research.Science.Data.DimensionList,Microsoft.Research.Science.Data.ReadOnlyDimensionList)">
            <summary>
            
            </summary>
            <param name="dl1"></param>
            <param name="dl2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyDimensionList.ToString">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyDimensionList.Item(System.Int32)">
            <summary>
            
            </summary>
            <param name="index"></param>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyDimensionList.Item(System.String)">
            <summary>
            Gets the dimension with a given <paramref name="name"/>.
            </summary>
            <param name="name"></param>
            <returns></returns>
            <exception cref="T:System.Exception">Dimension not found.</exception>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyDimensionList.Count">
            <summary>
            Gets the number of dimensions.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.EmptyValueType">
            <summary>
            Represents empty value for DataSet variables to contain
            metadata dictionary only.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ConstraintsFailedException">
            <summary>
            The exception that is thrown when the consistency constraints are failed for the data set.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetException">
            <summary>
            The exception that is thrown when a DataSet-related exceptional case occurs.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetException.#ctor">
            <summary>
            Initializes a new instance of the DataSetException class.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetException.#ctor(System.String)">
            <summary>
            Initializes a new instance of the DataSetException class.
            </summary>
            <param name="message">Error message</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetException.#ctor(System.String,System.Exception)">
            <summary>
            Initializes a new instance of the DataSetException class.
            </summary>
            <param name="innerException"></param>
            <param name="message">Error message</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>Initializes a new instance of the <see cref="T:Microsoft.Research.Science.Data.DataSetException"/> class
            with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data. </param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ConstraintsFailedException.#ctor">
            <summary>Initializes a new instance of the <see cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/> class. </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ConstraintsFailedException.#ctor(System.String)">
            <summary>Initializes a new instance of the <see cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/> 
            class with a specified error message. </summary>
            <param name="message">Error message</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ConstraintsFailedException.#ctor(System.String,System.Exception)">
            <summary>Initializes a new instance of the <see cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/> class
            with a specified error message and a reference to the inner exception that is the cause of this exception. 
            </summary>
            <param name="message">Error message</param>
            <param name="inner">Exception that causes this exception</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ConstraintsFailedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>Initializes a new instance of the <see cref="T:Microsoft.Research.Science.Data.ConstraintsFailedException"/> class
            with serialized data.
            </summary>
            <param name="info">The object that holds the serialized object data. </param>
            <param name="context">The contextual information about the source or destination.</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetCreateException">
            <summary>
            The exception that is thrown when the <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> fails to create a DataSet.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetCreateException.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="uri">Uri that caused the exception.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetCreateException.#ctor(System.String,System.String)">
            <summary>
            
            </summary>
            <param name="uri">Uri that caused the exception.</param>
            <param name="message"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetCreateException.#ctor(System.String,System.String,System.Exception)">
            <summary>
            
            </summary>
            <param name="uri">Uri that caused the exception.</param>
            <param name="message"></param>
            <param name="inner"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetCreateException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            
            </summary>
            <param name="info"></param>
            <param name="context"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetCreateException.FailedUri">
            <summary>
            Gets the costruction URI that caused the exception.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ProviderNotRegisteredException">
            <summary>
            The exception that is thrown when the <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> fails to create a DataSet 
            because it is not registered.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ProviderNotRegisteredException.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="uri">Uri that caused the exception.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ProviderNotRegisteredException.#ctor(System.String,System.String)">
            <summary>
            
            </summary>
            <param name="uri">Uri that caused the exception.</param>
            <param name="message"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ProviderNotRegisteredException.#ctor(System.String,System.String,System.Exception)">
            <summary>
            
            </summary>
            <param name="uri">Uri that caused the exception.</param>
            <param name="message"></param>
            <param name="inner"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ProviderNotRegisteredException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            
            </summary>
            <param name="info"></param>
            <param name="context"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DistributedCommitFailedException">
            <summary>
            The exception that is thrown if during distributed commit of DataSets linked by reference
            variables, some of these DataSets failed to commit its changes.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DistributedCommitFailedException.#ctor(Microsoft.Research.Science.Data.DataSet)">
            <summary>
            
            </summary>
            <param name="failedDataSet"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DistributedCommitFailedException.#ctor(Microsoft.Research.Science.Data.DataSet,System.Exception)">
            <summary>
            
            </summary>
            <param name="failedDataSet"></param>
            <param name="inner"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DistributedCommitFailedException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            
            </summary>
            <param name="info"></param>
            <param name="context"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DistributedCommitFailedException.FailedDataSet">
            <summary>
            Gets the data set that is unable to commit.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CannotPerformActionException">
            <summary>
            Represents an error that occurs when an action cannot be performed.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CannotPerformActionException.#ctor">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CannotPerformActionException.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CannotPerformActionException.#ctor(System.String,System.Exception)">
            <summary>
            
            </summary>
            <param name="message"></param>
            <param name="innerException"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ValueNotFoundException">
            <summary>
            Represents an error that occurs when there is no corresponded value or it cannot be calculated.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ValueNotFoundException.#ctor">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ValueNotFoundException.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ValueNotFoundException.#ctor(System.String,System.Exception)">
            <summary>
            
            </summary>
            <param name="message"></param>
            <param name="innerException"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ReadOnlyException">
            <summary>
            Represents an error when someone tries to modify a read only instance.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyException.#ctor">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyException.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyException.#ctor(System.String,System.Exception)">
            <summary>
            
            </summary>
            <param name="message"></param>
            <param name="inner"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            
            </summary>
            <param name="info"></param>
            <param name="context"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ResourceNotFoundException">
            <summary>
            The exception that is thrown when a particular resource is not found.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ResourceNotFoundException.#ctor">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ResourceNotFoundException.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="resourceName"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ResourceNotFoundException.#ctor(System.String,System.Exception)">
            <summary>
            
            </summary>
            <param name="resourceName"></param>
            <param name="inner"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ResourceNotFoundException.#ctor(System.Runtime.Serialization.SerializationInfo,System.Runtime.Serialization.StreamingContext)">
            <summary>
            
            </summary>
            <param name="info"></param>
            <param name="context"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute">
            <summary>
            Specifies the name of the DataSet provider.
            </summary>
            <remarks>
            <para>
            The name of a provider is referred in the DataSet URI
            (see remarks for the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> class).</para>
            <para>
            See remarks for the <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> class.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetProviderNameAttribute.#ctor(System.String)">
            <summary>
            Initializes the attribute.
            </summary>
            <param name="name">Name of the provider.</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetProviderNameAttribute.Name">
            <summary>
            Gets the name of the provider.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute">
            <summary>
            Specifies the types of files (extensions) acceptable by the DataSet provider.
            </summary>
            <remarks> 
            See remarks for the <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> class.
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute.#ctor(System.String)">
            <summary>
            Initializes the attribute.
            </summary>
            <param name="extension">File extension acceptable by the provider (including ".", e.g. ".dat").</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute.FileExtension">
            <summary>
            Gets the file extension acceptable by the provider (including ".", e.g. ".dat").
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute">
            <summary>
            Associates a class derived from the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> with
            a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider type.
            </summary>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSet"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute.#ctor(System.Type)">
            <summary>
            Initializes the attribute.
            </summary>
            <param name="uriType">Type of the provider.</param>
            <remarks>
            Type <paramref name="uriType"/> must be <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> type or
            be derived from the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> class.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute.UriType">
            <summary>
            Gets the type of the provider.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.FileNamePropertyAttribute">
            <summary>
            Indicates that the target property contains file name.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DirectoryPropertyAttribute">
            <summary>
            Indicates that the target property contains directory name.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.UriPropertyAttribute">
            <summary>
            Indicates that the target property contains URI
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Factory.DataSetFactory">
            <summary>Facilitates creating a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance from a URI.</summary>
            <remarks>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> is designated to enable creating a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance for a
            particular provider from a special URI (see <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/>).
            </para>
            <example>
            These examples demonstrate how to open datasets of different provider type
            from URI.
            <code>
            // If the URI is a simple path to a file, a provider can be determined by the extension: 
            DataSet dataSet = DataSet.Open("csv_for_autotypes.csv"); // ".csv" for CsvDataSet
            
            // If the URI has a schema "msds", a provider name is specified after a colon:
            DataSet dataSet = DataSet.Open("msds:csv?file=csv_for_autotypes.csv");  // "csv" for CsvDataSet
             
            DataSet dataSet = DataSet.Open(@"c:\data\ncfile.nc"); // ".nc" for NetCDFDataSet
            
            DataSet dataSet = DataSet.Open("msds:nc?file=ncfile.nc");  // "nc" for NetCDFDataSet
            
            // URI can contain parameters specific for a particular provider:
            DataSet dataSet = DataSet.Open("msds:as?server=(local)&amp;database=ActiveStorage&amp;integrated security=true&amp;GroupName=mm5&amp;UseNetcdfConventions=true");
            </code>
            </example>
            <para>
            A path also may contain parameters specified at the end after '?' (if the
            provider associated with the extension supports this feature).
            For example, the code:
            <code>
            DataSet ds  = DataSet.Open(@"c:\data\air0.csv?openMode=open&amp;fillUpMissingValues=true&amp;inferInt=true");
            </code>
            does the same as the code:
            <code>
            DataSet ds = DataSet.Open(@"msds:csv?file=c:\data\air0.csv&amp;openMode=open&amp;fillUpMissingValues=true&amp;inferInt=true");
            </code>
            </para>
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> type enables a customization of a URI prior to creating a
            DataSet. See <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.String)"/> for details.
            </para>
            <para>
            Any DataSet provider must be registered in the factory first to enable its instances 
            to be created by the <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Create(System.String)"/> method.
            Attribute <see cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/>,
            applied to a DataSet provider type, associate it with a provider name.
            Attribute <see cref="T:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute"/>
            associates a provider type with one or severial extensions.
            Attribute <see cref="T:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute"/>
            associates a provider type with a type derived from the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            that provides a customization of its URI.
            </para>
            <para>
            The factory control class is a static class 
            <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>. 
            The class allows registering of providers and creating new instances. 
            The class is used by the <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/> 
            and <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/> methods.
            </para>
            <para>
            There are three ways to register providers. First is a DataSetFactory.Register group of methods. 
            These methods allow both to register provider names and associate extensions 
            to a particular provider. The methods intensively use mentioned attributes 
            <see cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/> and 
            <see cref="T:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute"/> 
            in the process.
            </para>
            <example>
            <para>For example, the <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/> 
            provider can be registered in this way:</para>
            <code>
            DataSetFactory.Register(typeof(NetCDFDataSet));
            </code>
            <para>or this:</para>
            <code>
            DataSetFactory.RegisterAssembly("Microsoft.Research.Science.Data.NetCDF4.dll");
            </code>
            </example>
            <para>
            The second way to register providers is the method <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)"/> 
            that accepts a path and makes a search in that folder for all assemblies 
            containing providers and registers found providers. The method works only
            for code compiled for DEBUG configuration. This makes it convenient for
            development on a machine without Scientific DataSet runtime installation.
            <example>
            <para>In the following example all providers found in assemblies in 
            the current directory are registered:
            </para>
            <code>
            DataSetFactory.SearchFolder(Environment.CurrentDirectory);
            </code>
            </example>
            </para>
            <para>Third way to register provider is to add registration entry to configuration file
            (Requires presence of the Microsoft.Research.Science.Data.Configuration assembly).
            <example>
            <para>Example of configuration part is given below</para>
            <code>
            &lt;?xml version="1.0" encoding="utf-8" ?&gt;
            &lt;configuration&gt;
              &lt;!-- Declare configuration section named Microsoft.Research.Science.Data.1.3 (this name is required) --&gt;
              &lt;configSections&gt;
                &lt;section name="Microsoft.Research.Science.Data.1.3" type="Microsoft.Research.Science.Data.Factory.FactoryConfigurationSection, Microsoft.Research.Science.Data" /&gt;
                &lt;!-- Declarations of other config sections --&gt;
              &lt;/configSections&gt;
              &lt;Microsoft.Research.Science.Data&gt;
                   &lt;factories&gt;
                     &lt;!-- Register factory by name --&gt;
                     &lt;add name="myProvider" type="MyNamespace.DbxFactory, MyAssembly"/&gt;
                     &lt;!-- Register factory by extension --&gt; 
                     &lt;add ext=".dat" type="MyNamespace.DatProvider, MyAssembly"/&gt;
                   &lt;/factories&gt;
                &lt;/Microsoft.Research.Science.Data&gt;
            &lt;/configuration&gt;
            </code>
            </example>
            </para>
            <para>Registration by name is similar to invocation of 
            <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.Type)"/>.
            Registration by extension is similar to invocation of
            <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.String,System.Type)"/>.
            </para>
            <para>
            The core SDS assembly Microsoft.Research.Science.Data includes several providers:
            msds:memory (flat memory storage, <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"/>), 
            msds:memory2 (chunked memory storage, <see cref="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet"/>), 
            msds:csv (CSV file, <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/>), 
            msds:nc (NetCDF, <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/>), and 
            remoting providers: msds:wcf (<see cref="T:Microsoft.Research.Science.Data.Proxy.WCF.RemoteDataSetFactory"/>),
            msds:remoting (<see cref="T:Microsoft.Research.Science.Data.Proxy.Remoting.RemoteDataSetFactory"/>).
            </para>
            <para>When the factory is first accessed, it loads provider registration information from 
            the application configuration files. After that it registers the built-in providers, if they are not registered 
            by the configuration files yet.</para>
            <example>
            The following example creates a proxy connected to the service through the WCF channel
            (please refer documentation for 
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet">Microsoft.Research.Science.Data.Proxy.ProxyDataSet</see>):
            <code>
            // Creating a storage service for WCF:
            StorageService storage = new StorageService(taskQueue, dataSet);
            StorageServiceHost host = new StorageServiceHost(taskQueue, storage.MainPort);
            
            // Creating proxy:
            DataSet proxy = DataSet.Open("msds:wcf?uri=" + host.Uri); 
            </code>
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.String,System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.Reflection.Assembly)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Create(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.String)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Proxy.WCF.RemoteDataSetFactory"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Factory.DataSetFactory.providersByName">
            <summary>
            Tables of registered providers. Key is the provider name.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Factory.DataSetFactory.providersByExt">
            <summary>
            Tables of registered providers. Key is the acceptable file extension.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.GetRegisteredProviders">
            <summary>
            Gets an array of providers names registered in the factory.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.ContainsProvider(System.String)">
            <summary>
            Gets the value indicating whether provider with given name is registered or not.
            </summary>
            <param name="name">Name of the provider to check.</param>
            <returns>True, if the provider is registered; false, otherwise.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.GetExtensionsForProvider(System.String)">
            <summary>
            Gets an array of extensions (".ext") for the given provider name.
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.GetFactoryConfigurationSection(System.String)">
            <summary>Tries to load configuration section that is handled by current
            version of DataSet core libraries</summary>
            <param name="sectionName">Name of section to look for</param>
            <returns>Loaded section or null of no section is found</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.LoadConfiguration">
            <summary>Registers all providers from configuration file. Information is taken both 
            from local configuration file (if exists) and Machine.config. This method can be called 
            multiple times but only first call actually loads configuration, subsequent call do nothing.</summary> 
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.String,System.Type)">
            <summary>
            Registers the file extension acceptable by the provider <paramref name="dataSetProvider"/>.
            </summary>
            <param name="fileExtension">Acceptable extension (including ".", e.g. ".dat").</param>
            <param name="dataSetProvider">The provider type to associate with the extension. 
            This type should be
            either derived from <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and has
            public constructor accepting string or implement 
            <see cref="T:Microsoft.Research.Science.Data.Factory.IDataSetFactory"/></param>
            <returns>Returns true if the extension is registered.</returns>
            <remarks>		
            </remarks>
            <exception cref="T:System.ArgumentException">Type <paramref name="dataSetProvider"/> is not a subclass of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class. -- or --
            Type <paramref name="dataSetProvider"/> has no public constructor accepting the URI. -- and --
            Type <paramref name="dataSetProvider"/> does not implement <see cref="T:Microsoft.Research.Science.Data.Factory.IDataSetFactory"/>
            interface.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.Reflection.Assembly)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)">
            <summary>
            Registers file extensions acceptable by the provider <paramref name="dataSetProvider"/>.
            </summary>
            <param name="dataSetProvider">The provider type to associate with the extension.</param>
            <returns>Returns true if the extensions are registered.</returns>
            <exception cref="T:System.ArgumentException">
            Type <paramref name="dataSetProvider"/> is not a subclass of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class. -- or --
            Type <paramref name="dataSetProvider"/> has no public constructor accepting the URI.
            </exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.Type)">
            <summary>
            Registers the <paramref name="providerName"/> and associates it with the provider <paramref name="dataSetProvider"/>.
            </summary>
            <param name="providerName">Provider name.</param>
            <param name="dataSetProvider">The provider type to associate with the provider name. </param>
            <returns>Returns true if the provider is registered.</returns>
            <remarks>
            If the name <paramref name="providerName"/> is already registered in the factory
            the registration for the provider will be silently skipped and the method will return false.
            </remarks>
            <exception cref="T:System.ArgumentException"/>
            <exception cref="T:System.ArgumentNullException">
            Type <paramref name="dataSetProvider"/> is not a subclass of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class. -- or --
            Type <paramref name="dataSetProvider"/> has no public constructor accepting the URI. -- and --
            Type <paramref name="dataSetProvider"/> does not implement <see cref="T:Microsoft.Research.Science.Data.Factory.IDataSetFactory"/>
            interface.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.String)">
            <summary>
            Registers the <paramref name="providerName"/> and associates it with the provider <paramref name="dataSet"/>.
            </summary>
            <param name="providerName">Provider name.</param>
            <param name="providerTypeName">The provider type name to associate with the provider name. This type should be
            either derived from <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and has
            public constructor accepting string or implement 
            <see cref="T:Microsoft.Research.Science.Data.Factory.IDataSetFactory"/></param>
            <returns>Returns true if the provider is registered.</returns>
            <remarks>
            If the name <paramref name="providerName"/> is already registered in the factory
            the registration for the provider will be silently skipped and the method will return false.
            </remarks>
            <exception cref="T:System.ArgumentException"/>
            <exception cref="T:System.ArgumentNullException">
            Type <paramref name="providerTypeName"/> is not a subclass of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class. -- or --
            Type <paramref name="providerTypeName"/> has no public constructor accepting the URI. -- and --
            Type <paramref name="providerTypeName"/> does not implement <see cref="T:Microsoft.Research.Science.Data.Factory.IDataSetFactory"/>
            interface.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.Func{System.String,Microsoft.Research.Science.Data.DataSet})">
            <summary>
            Registers the <paramref name="providerName"/> and associates it with the provider constructor <paramref name="ctorFunc"/>.
            </summary>
            <param name="providerName">Provider name.</param>
            <param name="ctorFunc">Function to create DataSet from uri string</param>
            <returns>Returns true if the provider is registered.</returns>
            <remarks>
            If the name <paramref name="providerName"/> is already registered in the factory
            the registration for the provider will be silently skipped and the method will return false.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)">
            <summary>
            Registers the provider <paramref name="dataSetProvider"/> in the factory.
            </summary>
            <param name="dataSetProvider">The provider type to register.</param>
            <returns>Returns true if the provider is registered.</returns>
            <remarks>
            <para>
            Registers the name of the provider and its acceptable extensions in the factory.
            </para>
            <para>
            The name of the provider is taken from its attribute <see cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/>.
            If the provider type contains several attributes all the names specified will be pended for the provider to be
            registered with. If the type has no attribute of this type no exception will be thrown.
            If the name <paramref name="dataSetProvider"/> is already registered in the factory
            the registration for the provider will be silently skipped and the method will return false.
            </para>		
            <para>
            About extensions registering see remarks for the method <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>.
            </para>
            </remarks>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">
            Type <paramref name="dataSetProvider"/> is not a subclass of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class. -- or --
            Type <paramref name="dataSetProvider"/> has no public constructor accepting the URI.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.Reflection.Assembly)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Create(System.String)">
            <summary>
            Creates the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance for the specified <paramref name="uri"/>.
            </summary>
            <param name="uri">URI describing the DataSet to create.</param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>The method creates a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance based on the <paramref name="uri"/>.
            If the uri contains schema definition (i.e. starts with <c>"msds:"</c>) the factory
            tries to find a corresponded provider type from the registered providers table
            (see method <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>). If the provider is not registered,
            an exception will be thrown.</para>
            <para>If the uri has no schema definition, the string is considered as a path and
            the factory looks for provider by the extension of the given path
            (see method <see cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>). If there are more than one
            providers associated with the extension, they will be constructed one by one until
            the data set is created successfully.
            </para>
            <para>
            The path also may contain parameters specified at the end after '?' (if the
            provider associated with the extensions supports this feature).
            For example, the code:
            <code>
            DataSet ds  = DataSet.Open(@"c:\data\air0.csv?openMode=open&amp;fillUpMissingValues=true&amp;inferInt=true");
            </code>
            does the same as the code:
            <code>
            DataSet ds = DataSet.Open(@"msds:csv?file=c:\data\air0.csv&amp;openMode=open&amp;fillUpMissingValues=true&amp;inferInt=true");
            </code>
            </para>
            <para>
            If the <paramref name="uri"/> is null or an empty string, an instance of the 
            <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"/> is created.
            </para>
            <para>
            See also remarks for the <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> class.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.String,System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterExtension(System.String,System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.Reflection.Assembly)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
            <exception cref="T:Microsoft.Research.Science.Data.ProviderNotRegisteredException">
            DataSet is not registered in the factory.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.DataSetCreateException">
            Particular DataSet provider has thrown an exception at construction.</exception>
            <exception cref="T:System.ArgumentException"/>
            <exception cref="T:System.InvalidOperationException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Create(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Creates the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance for the specified <paramref name="uri"/>.
            </summary>
            <param name="uri">URI containing provider name and parameters.</param>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>.</remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Create(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.GetProviderNameByExtention(System.String)">
            <summary>
            Gets the provider name that is associated with the extension.
            </summary>
            <param name="extension"></param>
            <returns>The provider name.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.GetProviderNameByType(System.Type)">
            <summary>
            Gets the provider name that is associated with the type.
            </summary>
            <param name="providerType">Provider type.</param>
            <returns>The provider name, if the type found; or null, otherwise.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.GetProviderNamesByType(System.Type)">
            <summary>
            Gets all provider names associated with the type.
            </summary>
            <param name="providerType">Provider type.</param>
            <returns>List of provider names, if the type found; or empty list, otherwise.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.Type)">
            <summary>
            Creates the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance for the <paramref name="providerType"/>.
            </summary>
            <param name="providerType">Type of the provider whose URI is to be created.</param>
            <returns><see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance.</returns>
            <remarks>See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>.</remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.String)">
            <summary>
            Creates the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance for the specified <paramref name="uri"></paramref>.
            </summary>
            <param name="uri">Uri containing provider name and probably parameters.</param>
            <returns><see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance.</returns>
            <remarks>
            Creates a class inhereted from DataSetUri. Method looks in registered providers for
            attribute <see cref="T:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute"/> and returns an appropriate class instance. 
            If such class is not found, throws an exception.
            <para>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/> for details.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.CreateUri(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.GetExtension(System.String)">
            <summary>
            Gets an extension (".ext") from the path with support of appended
            parameters through "?".
            </summary>
            <param name="path"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)">
            <summary>
            Searches the given file or folder for assemblies containg data set providers 
            and registers found providers.
            </summary>
            <param name="path">Path to the folder or an assembly file to search in.</param>
            <remarks>
            <para>If path specifies a folder, all files with extension ".dll" will be considered.
            DataSet core assembly file Microsoft.Research.Science.Data.dll is always ignored.</para>
            <para>The method compiles with condition <c>"DEBUG"</c> only.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.Reflection.Assembly)"/>
            <exception cref="T:System.ArgumentNullException"/>
            <exception cref="T:System.ArgumentException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.String)">
            <summary>
            Registers all providers found in the given assembly.
            </summary>
            <param name="fileName">The assembly to look for providers in.</param>
            <remarks>The method throws any exception only on loading of the assembly,
            but not after that. Even if there is
            a problem during the registration it silently returns total number
            of successfully registered providers.</remarks>
            <returns>Number of successfully registered providers.</returns>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.Reflection.Assembly)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.Reflection.Assembly)">
            <summary>
            Registers all providers found in the given assembly.
            </summary>
            <param name="assembly">The assembly to look for providers in.</param>
            <remarks>The method doesn't throw any exception even if there is
            a problem during the registration and silently returns total number
            of successfully registered providers.</remarks>
            <returns>Number of sucessfully registered providers.</returns>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisterAssembly(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.Register(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.SearchFolder(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.RegisteredToString">
            <summary>
            Represents the table of registered providers as a string.
            </summary>
            <returns>String with providers.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.BuildProviderNotRegisteredException(System.String,System.String)">
            <summary>
            Formats exception message based on uri, traces it and returns the exception.
            </summary>
            <param name="uri"></param>
            <param name="innerException"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.BuildDataSetCreateException(System.String,System.Exception)">
            <summary>
            Formats exception message based on uri and innerException, traces it and returns the exception.
            </summary>
            <param name="uri"></param>
            <param name="innerException"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactory.BuildDataSetCreateException(System.String,System.String)">
            <summary>
            Formats exception message based on uri and message, traces it and returns the exception.
            </summary>
            <param name="uri"></param>
            <param name="message"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri">
            <summary>BaseUri is a prefix for all DataSet locations in DataSet URI. Null value means that
            <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> is not specified which is by default. Exact interpretation of <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> and behaviour 
            when it is not specified depends on provider type.
            <para>All file based providers appends <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> to all relative file pathes and URIs. If relative file
            path is specified and <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> is null, current directory is taken instead.</para>
            <para>Remote DataSet providers will append <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> to server uri if it is relative.</para></summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.DataSetFactoryEntry.CreateDataSet(System.String)">
            <summary>
            Creates an istance of the stored DataSet provider with the given uri.
            </summary>
            <param name="uri"></param>
            <returns></returns>
            <exception cref="T:Microsoft.Research.Science.Data.DataSetCreateException">
            Particular DataSet provider has thrown an exception at construction.</exception>
            <exception cref="T:System.InvalidOperationException"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Factory.DataSetFactoryEntry.Constructor">
            <summary>
            Gets the constructor of the provider accepting a URI.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Factory.DataSetFactoryEntry.DataSetType">
            <summary>
            Gets the type of the provider associated with the name.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Factory.DataSetFactoryEntry.Name">
            <summary>
            Gets the name of the provider.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Factory.IDataSetFactory">
            <summary>Provides a method to create a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> from a URI.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Factory.IDataSetFactory.Create(System.String)">
            <summary>Creates a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> from the specified URI.</summary>
            <param name="uri">A URI in a format supported by this factory.</param>
            <returns>New DataSet object.</returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableReferenceName">
            <summary>This class holds information about referenced variables in a DataSet uri.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableReferenceName.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="name"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableReferenceName.#ctor(System.String,System.String)">
            <summary>
            
            </summary>
            <param name="name"></param>
            <param name="alias"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableReferenceName.Name">
            <summary>Gets name of variable in referenced DataSet</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableReferenceName.Alias">
            <summary>Gets alias of referenced variable - name of referenced variable in 
            referencing dataset</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetUri">
            <summary>
            The class represents a special kind of URI that is a DataSet identification string.
            </summary>
            <remarks>
            <para>
            DataSet URI consists of mandatory URI schema ‘msds’ and SDS <see cref="P:Microsoft.Research.Science.Data.DataSetUri.ProviderName"/> followed by 
            optional provider parameters.
            The identification string has following syntax:
            </para>
            <para>
            msds:provider-name?param1=value1&amp;param2=value2&amp;...#include-var1,include-var2
            </para>
            <para>More formally the URI format is: </para>
            <para>DataSetURI ::= msds:provider[?parameters][#include-vars] </para>
            <para>provider-name ::= identifier</para>
            <para>parameters ::= parameters&amp;parameters|parameter-name=parameter-value</para>
            <para>include-vars := variable-name|variable-name,include-vars</para>
            <para>parameter-name ::= identifier</para>
            <para>parameter-value ::= character-string </para>
            <para>Provider-identifier and set of parameter-names depends on a particular data set provider. 
            Please note that the parameters string can contain duplicate parameter names. 
            </para>
            <para>
            A list of supported parameters depends on which provider name is specified in a URI. 
            When a URI is parsed, all parameters, those are not supported by the particular provider, are ignored.
            </para>
            <para>
            Note that DataSet URI is case-sensitive.
            </para>
            <para>Examples of DataSet URIs are <c>"msds:csv?file=c:\data\test.csv"</c>,
            <c>"msds:as?server=(local)&amp;database=ActiveStorage&amp;integrated security=true&amp;GroupName=mm5&amp;UseNetcdfConventions=true"</c>.
            </para>
            <para>The <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> class makes verification and parsing of DataSet URIs and provides methods
            to access parameters of the given URI. It should be used by provider implementators to parse DataSet URI.</para>
            <para>
            A DataSet provider might have a related special type derived from <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> describing
            its parameters. This enables customization of a URI through such class before
            creating the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance. See <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
            and <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>.
            </para>
            <para>Read also about DataSet factoring here <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSetUri.DataSetUriScheme">
            <summary>
            The scheme name for the DataSet uri: "msds".
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.DataSetUri.ReservedCharacters">
            <summary>Uri reserved characters according to RFC 2396</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.#ctor(System.String)">
            <summary>
            Initializes the instance of the class.
            </summary>
            <param name="uri">DataSet uri string.</param>
            <exception cref="T:System.ArgumentException"><paramref name="uri"/> is not data set uri.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="uri"/> is null.</exception>
            <exception cref="T:System.UriFormatException"><paramref name="uri"/> is empty or doesn't conform to URI syntax. See <see cref="M:System.Uri.#ctor(System.String)"/> for details.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.#ctor(System.String,System.Type)">
            <summary>
            Initializes the instance of the class.
            </summary>
            <param name="uri">DataSet uri string.</param>
            <param name="providerType">Type of the DataSet provider to check that URI is correct.</param>
            <exception cref="T:System.ArgumentException"><paramref name="uri"/> is not data set uri.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="uri"/> is null.</exception>
            <exception cref="T:System.UriFormatException"><paramref name="uri"/> is empty or doesn't conform to URI syntax. See <see cref="M:System.Uri.#ctor(System.String)"/> for details.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.#ctor(System.Type)">
            <summary>
            Initializes the instance of the class.
            </summary>
            <param name="providerType">Type of the DataSet provider to create a default URI for.</param>
            <exception cref="T:System.ArgumentNullException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetProviderName(System.Type)">
            <summary>
            Gets provider name from <see cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/>
            of the type. If the attribute is missing, throws an exception.
            </summary>
            <param name="providerType"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.AssertProviderName(System.String,System.Type)">
            <summary>
            Asserts whether the provider name is associated with the given provider type.
            </summary>
            <param name="providerName">Name of the provider to check.</param>
            <param name="providerType">Provider type.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String)">
            <summary>
            Gets the value of the specified parameter.
            </summary>
            <param name="parameter">The name of a parameter.</param>
            <returns>The value for the specified parameter.</returns>
            <remarks>
            <para>Parameter name is case-sensitive.</para>
            <para>If the uri doesn't contain the parameter an exception is thrown.</para>
            <para>
            If there are several parameters with the same name the method returns first one.
            </para>
            </remarks>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The uri doesn't contain the parameter.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="parameter"/> is null.</exception>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.SetParameterValue(System.String,System.String,System.Boolean)">
            <summary>
            Sets the value of the specified parameter.
            </summary>
            <param name="key">The name of a parameter.</param>
            <param name="value">New value of parameter</param>
            <param name="multiplyParams">True if this parameter can occur multiple times in this uri.</param>
            <returns>The value for the specified parameter.</returns>
            <remarks>
            <para>Parameter name <paramref name="key"/> and <paramref name="value"/> are case-sensitive.</para>
            <para>If the uri doesn't contain the parameter an exception is thrown.</para>
            <para>
            If there are several parameters with the same name and <paramref name="multiplyParams"/> is false, 
            the method replaces first one. Otherwise, new parameter added.
            </para>
            </remarks>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The uri doesn't contain the parameter.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="key"/> is null.</exception>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.RemoveParameter(System.String)">
            <summary>
            Removes the parameter from the list.
            </summary>
            <param name="key"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.SetParameterValue(System.String,System.String)">
            <summary>
            Sets the value of the specified parameter, each parameter considers as unique.
            </summary>
            <param name="key">The name of a parameter.</param>
            <param name="value">New value of parameter</param>
            <returns>The value for the specified parameter.</returns>
            <remarks>
            <para>Parameter name <paramref name="key"/> and <paramref name="value"/> are case-sensitive.</para>
            <para>If the uri doesn't contain the parameter an exception is thrown.</para>
            <para>
            If there is existing parameter with the same name, the method replaces first one.
            </para>
            </remarks>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The uri doesn't contain the parameter.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="key"/> is null.</exception>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String,System.String)">
            <summary>
            Gets the value of the specified parameter or specified default value, if 
            the uri doesn't contain the parameter.
            </summary>
            <param name="parameter">The name of a parameter.</param>
            <param name="default">Default value that is returned if the uri doesn't contain the parameter.</param>
            <remarks>
            <para>Parameter name is case-sensitive.</para>
            <para>
            If there are several parameters with the same name, the method returns first one.
            </para>
            </remarks>
            <returns>The value for the specified parameter or default value.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="parameter"/> is null.</exception>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String)">
            <summary>
            Gets the list of values for the specified parameter.
            </summary>
            <param name="parameter">The name of a parameter.</param>
            <returns>The value for the specified parameter.</returns>
            <remarks>
            <para>Parameter name is case-sensitive.</para>
            <para>If the uri doesn't contain the parameter, the output collection is empty.</para>		
            </remarks>
            <exception cref="T:System.ArgumentNullException"><paramref name="parameter"/> is null.</exception>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String,System.String)">
            <summary>
            Gets the list of values for the specified parameter or the default value, if 
            the uri doesn't contain the parameter.
            </summary>
            <param name="parameter">The name of a parameter.</param>
            <param name="default">Default value that is returned if the uri doesn't contain the parameter.</param>
            <remarks>		
            <para>Parameter name is case-sensitive.</para>
            </remarks>
            <returns>The list of values for the specified parameter or a list with the default value only.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="parameter"/> is null.</exception>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterOccurences(System.String)">
            <summary>
            Returns the number of occurences of the parameter in the uri.
            </summary>
            <param name="parameter">The parameter to locate in the uri.</param>
            <returns>Returns the number of occurences.</returns>
            <remarks>
            <para>Parameter name is case-sensitive.</para>
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.ContainsParameter(System.String)">
            <summary>
            Determines whether the uri contains the parameter.
            </summary>
            <param name="parameter">The parameter to locate in the uri.</param>
            <returns>Returns the value indicating whether the uri contains the parameter.</returns>
            <remarks>
            <para>Parameter name is case-sensitive.</para>
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValues(System.String,System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.ToString">
            <summary>
            Converts the URI into a string.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetOpenModeOrDefault(Microsoft.Research.Science.Data.ResourceOpenMode)">
            <summary>
            Returns the open mode if it is specified in the uri; otherwise, returns <paramref name="default"/> value.
            </summary>
            <param name="default">The mode that should be returned if it is not specified in the uri.</param>
            <returns>The open mode.</returns>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.OpenMode"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.IsDataSetUri(System.String)">
            <summary>
            Checks whether the given string is a DataSet uri.
            </summary>
            <param name="uri">The string to check.</param>
            <remarks>
            The method checks whether the string <paramref name="uri"/>
            identifies the data set uri scheme (see <see cref="F:Microsoft.Research.Science.Data.DataSetUri.DataSetUriScheme"/>).
            For example, "msds:csv?file=tests.csv" is a DataSet uri,
            and "http://microsoft.com" or "c:\Data\tests.csv" are not DataSet uri.
            </remarks>
            <returns>True, if the <paramref name="uri"/> is a DataSet uri.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.CreateFromPath(System.String,System.String,System.String)">
            <summary>
            Transforms the given <paramref name="path"/> into a DataSet URI string.
            </summary>
            <param name="path">Path to a resource the DataSet should be created for.</param>
            <param name="providerName">Name of the provider for the DataSetUri.</param>
            <param name="resourceParamName">The parameter name that should be equal to <paramref name="path"/>
            (usually, <c>"file"</c>).</param>
            <returns>A DataSet URI string containing
            a reference to the resource identified by <paramref name="path"/>.</returns>
            <remarks>
            <para>
            The method has to convert a path with possible parameters appended through '?' into
            a DataSet URI string.
            For example, a path <c>c:\data\air0.csv</c> or even <c>c:\data\air0.csv?inferDims=true&amp;culture=ru-RU</c>
            are to be converted into 
            <c>msds:csv?file=c:\data\air0.csv</c> and <c>msds:csv?file=c:\data\air0.csv&amp;inferDims=true&amp;culture=ru-RU</c>,
            if <paramref name="resourceParamName"/> is <c>"file"</c> (the usual name for the parameter
            referring to a DataSet underlying resource file) and <paramref name="providerName"/>
            is <c>"csv"</c>.
            </para>
            <para>All <paramref name="path"/>, <paramref name="providerName"/> and <paramref name="resourceParamName"/>
            cannot be null or an empty string; otherwise an exception is thrown.</para>
            </remarks>
            <exception cref="T:System.ArgumentException">Null or empty string specified as any of the parameters</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)">
            <summary>
            Creates the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance for the specified <paramref name="uri"></paramref>.
            </summary>
            <param name="uri">Uri containing provider name and probably parameters.</param>
            <returns><see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance.</returns>
            <remarks>
            <para>
            Each DataSet provider type can have a related class derived from the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> type
            linked to it through the <see cref="T:Microsoft.Research.Science.Data.DataSetProviderUriTypeAttribute"/> attribute.
            The instance of the class enables a prior customization of parameters specific to the DataSet provider
            through public properties of the class. Then the Uri instance can be used to construct
            a particular DataSet (see <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>).
            </para>
            <example>
            <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> can be created from a name of a DataSet provider
            (see <see cref="T:Microsoft.Research.Science.Data.DataSetProviderNameAttribute"/>).
            All parameters have default values.
            <code>
            DataSetUri uri = DataSetUri.Create("msds:csv"); // creates CsvUri
            uri.Separator = Delimiter.Semicolon;  // changing default separator
            uri.FileName = "something.csv"; // specifying file name
            DataSet ds = DataSet.Open(uri); // constructing a data set from the customized uri
            </code>
            <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> can be created from a URI with extra parameters defined:
            <code>
            DataSetUri uri = DataSetUri.Create("msds:csv?file=something.csv");
            uri.Separator = Delimiter.Semicolon;
            uri.SaveHeader = false;
            DataSet ds = DataSet.Open(uri);
            </code>
            <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> can be created from one of extension associated with the DataSet provider
            (see <see cref="T:Microsoft.Research.Science.Data.DataSetProviderFileExtensionAttribute"/>).
            <code>
            DataSet uri = DataSetUri.Create(".csv");
            uri.Separator = Delimiter.Semicolon;
            uri.FileName = "something.csv";
            DataSet ds = DataSet.Open(uri);
            </code>
            <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> can be created from a file path with some extra parameters defined:
            <code>
            DataSetUri uri = DataSetUri.Create("something.csv?separator=tab&amp;openMode=readOnly");
            uri.SaveHeader = false;
            DataSet ds = DataSet.Open(uri);
            </code> 
            <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> can be created from a DataSet provider type:
            <code>
            DataSetUri uri = DataSetUri.Create(typeof(CsvDataSet));
            uri.SaveHeader = false;
            uri.FileName = "something.csv";
            DataSet ds = DataSet.Open(uri);
            </code> 
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.Type)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"></seealso>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"></seealso>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.Type)">
            <summary>
            Creates the <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance for the <paramref name="providerType"/>.
            </summary>
            <param name="providerType">Type of the provider whose URI is to be created.</param>
            <returns><see cref="T:Microsoft.Research.Science.Data.DataSetUri"/> instance.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Open(Microsoft.Research.Science.Data.DataSetUri)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.NormalizeUri(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Updates the properties of the <paramref name="uri"/> marked with <see cref="T:Microsoft.Research.Science.Data.FileNamePropertyAttribute"/>,
            <see cref="T:Microsoft.Research.Science.Data.UriPropertyAttribute"/>
            according to <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> property.
            </summary>
            <param name="uri"></param>
            <remarks>
            <para>
            The method finds all properties of the <paramref name="uri"/> marked
            with <see cref="T:Microsoft.Research.Science.Data.FileNamePropertyAttribute"/>, <see cref="T:Microsoft.Research.Science.Data.UriPropertyAttribute"/> and having value
            that is a relative local path, and then updates these properties
            according to current value of <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/>
            property.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.NormalizeFileNames(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Updates the properties of the <paramref name="uri"/> marked with <see cref="T:Microsoft.Research.Science.Data.FileNamePropertyAttribute"/>
            according to <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> property.
            </summary>
            <param name="uri"></param>
            <remarks>
            <para>
            The method finds all properties of the <paramref name="uri"/> marked
            with <see cref="T:Microsoft.Research.Science.Data.FileNamePropertyAttribute"/> and having value
            that is a relative local path, and then updates these properties
            according to current value of <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/>
            property.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.NormalizeDirectoryPath(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Updates the properties of the <paramref name="uri"/> marked with <see cref="T:Microsoft.Research.Science.Data.DirectoryPropertyAttribute"/>
            according to <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> property.
            </summary>
            <param name="uri"></param>
            <remarks>
            <para>
            The method finds all properties of the <paramref name="uri"/> marked
            with <see cref="T:Microsoft.Research.Science.Data.DirectoryPropertyAttribute"/> and having value
            that is a relative local path, and then updates these properties
            according to current value of <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/>
            property.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.NormalizeUris(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Updates the properties of the <paramref name="uri"/> marked with <see cref="T:Microsoft.Research.Science.Data.UriPropertyAttribute"/>
            to include <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> if present.
            </summary>
            <param name="uri"></param>
            <remarks>
            <para>
            The method finds all properties of the <paramref name="uri"/> marked
            with <see cref="T:Microsoft.Research.Science.Data.UriPropertyAttribute"/> and having value
            that is a relative Uri, and then updates these properties
            using value of <see cref="P:Microsoft.Research.Science.Data.Factory.DataSetFactory.BaseUri"/> property.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.NormalizeFileName(Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Updates the parameter "file" in the <paramref name="uri"/>.
            </summary>
            <param name="uri"></param>
            <remarks>
            <para>
            If the <paramref name="uri"/> contains parameter "file" and its value
            is a relative local path, the method updates the <paramref name="uri"/>,
            assigning to the "file" full path using current directory.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetUri.GetRelativeUri(Microsoft.Research.Science.Data.DataSetUri,System.String)">
            <summary>
            Clones the given uri, replacing absolute file and directory paths with relative.
            </summary>
            <param name="uri">Input DataSetUri.</param>
            <param name="basePath">The base path to make relative paths.</param>
            <returns>New DataSetUri.</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetUri.ProviderName">
            <summary>
            Gets the provider name specified in the uri.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetUri.Item(System.String)">
            <summary>
            Gets or sets the value of the specified parameter.
            </summary>
            <param name="parameter">The name of a parameter.</param>
            <returns>The value for the specified parameter.</returns>
            <remarks>
            <para>Parameter name and value are case-sensitive.</para>
            <para>If the uri doesn't contain the parameter an exception is thrown.</para>
            <para>
            If there are several parameters with the same name the method returns first one.
            While setting value considers that parameter with this name is unique.
            </para>
            </remarks>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">The uri doesn't contain the parameter.</exception>
            <exception cref="T:System.ArgumentNullException"><paramref name="parameter"/> is null.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetParameterValue(System.String,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.SetParameterValue(System.String,System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.SetParameterValue(System.String,System.String,System.Boolean)"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetUri.VariableReferences">
            <summary>Gets an array of referenced variable names.</summary>
            <remarks>
            <para>
            Variable names can be referenced in a uri appended through the '#' mark:
            <c>msds:csv?file=data.csv#a,b,c</c>. In the example, <c>a,b,c</c> are
            variables names referenced in the uri.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetUri.ParameterKeys">
            <summary>
            Gets the keys of the parameters.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetUri.OpenMode">
            <summary>
            Gets the open resource mode.
            </summary>
            <remarks>
            <para>
            The property gets the <see cref="T:Microsoft.Research.Science.Data.ResourceOpenMode"/> value representing the flag "openMode"
            in the data set URI.
            </para>
            <para>The flag "openMode" specifies how the data set should open a file, 
            data base or whatever resource it uses to store the data.</para>
            <para>
            Possible values for the flag are (case-sensitive):
            <list type="table">
            	<listheader>
            	<term>Mode</term>
            	<description>Description</description>
            	</listheader>
            	<item>
            	<term>createNew</term>
            	<description>Specifies that the data set should create new resource. If the resource already exists, an exception IOException is thrown.</description>
            	</item>
            	<item>
            	<term>open</term>
            	<description>Specifies that the data set should open an existing resource. If the resource does not exist, an exception ResourceNotFoundException is thrown.</description>
            	</item>
            	<item>
            	<term>create</term>
            	<description>Specifies that the data set should create a new resource. If the resource already exists, it will be re-created.</description>
            	</item>
            	<item>
            	<term>openOrCreate</term>
            	<description>Specifies that the data set should open a resource if it exists; otherwise, a new resource should be created.</description>
            	</item>
            </list>
            </para>
            <example>
            <code>
            DataSet dataSet = DataSet.Open("msds:nc?file=data.nc&amp;openMode=open"); 
            DataSet dataSet = DataSet.Open("msds:as?server=(local)&amp;database=ActiveStorage&amp;integrated security=true&amp;GroupName=mm5&amp;UseNetcdfConventions=true&amp;openMode=createNew");
            </code>
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSetUri.GetOpenModeOrDefault(Microsoft.Research.Science.Data.ResourceOpenMode)"/>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ResourceOpenMode">
            <summary>
            The flag "openMode" specifies how the data set should open a file, data base or whatever resource it uses to store the data.
            </summary>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSetUri.OpenMode"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ResourceOpenMode.CreateNew">
            <summary>
            Specifies that the data set should create new resource. If the resource already exists, an exception IOException is thrown.  
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ResourceOpenMode.Create">
            <summary>
            Specifies that the data set should create a new resource. If the resource already exists, it will be re-created.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ResourceOpenMode.Open">
            <summary>
            Specifies that the data set should open an existing resource. If the resource does not exist, an exception ResourceNotFoundException is thrown.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ResourceOpenMode.OpenOrCreate">
            <summary>
            Specifies that the data set should open a resource if it exists; otherwise, a new resource should be created.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ResourceOpenMode.ReadOnly">
            <summary>
            Specified that the data set should open an existing resource in read-only mode
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.IChunkSizesAdjustable">
            <summary>
            The instance, implementing this interface, allows to adjust chunk sizes.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.IChunkSizesAdjustable.SetChunkSizes(System.Int32[])">
            <summary>
            Sets the chunk sizes (in data elements) to be used when new variables of the rank equal to length of the <paramref name="sizes"/> are added.
            </summary>
            <remarks>
            <para>
            If a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance implements this interface, it stores data by chunks and allows a user to change the chunk sizes.
            The argument of the <see cref="M:Microsoft.Research.Science.Data.IChunkSizesAdjustable.SetChunkSizes(System.Int32[])"/> method affects new variables when they are being added to the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, 
            if their rank is equal to the length of the <paramref name="sizes"/> array.
            If not, <see cref="T:Microsoft.Research.Science.Data.DataSet"/> uses default chunk sizes.
            </para>
            <para>
            Each i-th value of the <paramref name="sizes"/> array is a number of elements in a single chunk by index i.
            </para>
            <example>
            <code>
            DataSet ds = DataSet.Open("data.nc?openMode=create");
            IChunkSizesAdjustable adjustChunkSize = (IChunkSizesAdjustable)ds;
            adjustChunkSize.SetChunkSizes(new int[] { 100000 });
            ds.AddVariable&lt;double&gt;("var1", "i");  // chunk size for variable "var1" is 100000 of numbers
            adjustChunkSize.SetChunkSizes(new int[] { 10000, 10 });
            ds.AddVariable&lt;double&gt;("var2", "i", "j");  // chunk size for variable "var1" is 10000 x 10 of numbers
            </code>
            </example>
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.PureComputationalVariable`1">
            <summary>
            Represents an abstract computational variable that produces data not based on an underlying variable.
            </summary>
            <typeparam name="DataType">Type of the output data.</typeparam>
        </member>
        <member name="T:Microsoft.Research.Science.Data.TransformedVariable`1">
            <summary>
            TransformedVariable&lt;DataType&gt; class is a base abstract class for all computational variables.
            </summary>
            <typeparam name="DataType">Type of an element of the variable.</typeparam>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ITransformedVariable">
            <summary>
            Untyped representation of a transform variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformedVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="dims"></param>
            <param name="dataSet"></param>
        </member>
        <member name="F:Microsoft.Research.Science.Data.PureComputationalVariable`1.shape">
            <summary>Committed shape of the variable.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.PureComputationalVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="sds"></param>
            <param name="dims"></param>
            <param name="name"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.PureComputationalVariable`1.ReadShape">
            <summary>
            Returns shape looking for length of dimemsions of other variable of data set.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.PureComputationalVariable`1.Metadata">
            <summary>
            Gets the metadata collection of the computational variable.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.TransformationVariable`2">
            <summary>
            Represents an abstract computational variable performing
            a reversible or non-reversible transformation of a single source variable.
            </summary>
            <typeparam name="SourceDataType">Type of data for the underlying variable.</typeparam>
            <typeparam name="ResultDataType">Type of data for the output variable.</typeparam>
            <remarks>
            <para>TransformationVariable "mirrors" the data in underlying variable. 
            All requests to data translate to corresponding requests for underlying variable.
            Changes to underlying variable generate corresponding events for the transformation variable, etc.</para>
            <para>If transformation is reversible, the data is "mirrored" in both ways. 
            Calls to Variable.PutData() overloads or setting the Variable[indices] property 
            translate to corresponding changes of underlying variable data.</para>
            <para>
            Metadata of the underilying variable propagate to metadata for the TransformationVariable except some
            certain entries, name and the provenance being an example of such exception. Therefore, changes of the replicated
            entries in this variable update the same entries in the underlying variable and vice versa.
            The extra parameters in the constuctor allow specifying the list of independent entries.
            See more in remarks for the constructor.
            </para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.TransformationVariable`2.sourceVariable">
            <summary>
            The variable this computational variable is based on.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.TransformationVariable`2.metadata">
            <summary>
            The metadata collection is based on the source variable.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.TransformationVariable`2.proposedChangesList">
            <summary>Collection of proposed changes currently being handled. This collection should
            enable correct concurrent work on simultaneous changing of the underlying and this variables.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformationVariable`2.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,Microsoft.Research.Science.Data.Variable{`1},System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="sds"></param>
            <param name="name"></param>
            <param name="dims"></param>
            <param name="sourceVariable">The variable this computational variable is based on.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformationVariable`2.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,Microsoft.Research.Science.Data.Variable{`1},System.String[],System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="hiddenEntries">Collection of keys which are not to be inherited from the underlying metadata.
            These entries are changed independently.</param>
            <param name="readonlyEntries">Collection of keys that cannot be changed through this collection.</param>
            <param name="name"></param>
            <param name="dims"></param>
            <param name="dataSet"></param>
            <param name="sourceVariable">The variable this computational variable is based on.</param>
            <remarks>
            <para>The <paramref name="hiddenEntries"/> and <paramref name="readonlyEntries"/> parameters 
            allow to make some metadata entries indpendent from the metadata of the underlying variable.
            These parameters can be null and this will be considered as an empty collection.</para>
            <para>Two entries are always independent from the underlying metadata. These are
            the name and the provenance entries of the variable's metadata.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformationVariable`2.Transform(System.Int32[],System.Array)">
            <summary>
            Transforms underlying data from rawData array to TransformedVariable data
            </summary>
            <param name="origin">Origin of rawData in underlying variable.</param>
            <param name="rawData">Data to be transformed.</param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformationVariable`2.TransformIndexRectangle(Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            Transforms the underlying variable's rectangle into the rectangle 
            for this transformation variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformationVariable`2.ReverseTransform(System.Int32[],System.Array)">
            <summary>
            Transforms TransformedVariable data back into underlying variable
            </summary>
            <param name="origin">Origin of data in TransformedVariable.</param>
            <param name="data">Data to be transformed back into underlying variable.</param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformationVariable`2.ReverseTransformIndexRectangle(Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            Transforms the transformation variable's rectangle into the rectangle 
            for its underlying variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TransformationVariable`2.ReadShape">
            <summary>
            Returns the shape that is a result of transformation of source variable's shape through the 
            <see cref="M:Microsoft.Research.Science.Data.TransformationVariable`2.TransformIndexRectangle(Microsoft.Research.Science.Data.Rectangle)"/> method.
            </summary>
            <returns>The committed shape of the variable.</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.TransformationVariable`2.SourceVariable">
            <summary>
            Gets the underlying variable that is being transformed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.TransformationVariable`2.Metadata">
            <summary>
            Gets the metadata collection of the computational variable.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.MetadataChanges">
            <summary>
            Stores changes of the metadata dictionary.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.MetadataDictionary">
            <summary>
            Represents a dictionary of attributes attached to a variable.
            </summary>
            <remarks>
            <para>
            Variable metadata is a dictionary of keys and values.
            Key is always a string with length limited by 256 characters.
            Metadata key cannot be null or an empty string.
            It cannot contain following Unicode symbols: <c>'/'</c>, <c>'0x00'-'0x1F'</c>, <c>'0x7F'-'0xFF'</c>.
            Value is an instance of any of supported type, listed in the table below: 
            <list type="bullet">
            <item><description>all supported data types (listed in the remarks for <see cref="T:Microsoft.Research.Science.Data.Variable"/>);</description></item>
            <item><description>one-dimensional array of supported data types.</description></item>
            </list>
            </para>   
            <para>
            There are two predefined keys to be used for a variable name (<see cref="F:Microsoft.Research.Science.Data.MetadataDictionary.KeyForName"/>)
            and a missing value attribute (<see cref="F:Microsoft.Research.Science.Data.MetadataDictionary.KeyForMissingValue"/>). 
            The <see cref="T:Microsoft.Research.Science.Data.Variable"/> class has appropriate properties to get an access to these values.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
            <seealso cref="P:Microsoft.Research.Science.Data.Variable.Name"/>
            <seealso cref="P:Microsoft.Research.Science.Data.Variable.MissingValue"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.MetadataDictionary.KeyForName">
            <summary>Key for the Name entry.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.MetadataDictionary.KeyForMissingValue">
            <summary>Key for the MissingValue entry.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.MetadataDictionary.dictionary">
            <summary>Committed metadata attributes.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.MetadataDictionary.modified">
            <summary>Modified attributes (added or changed). May be null.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.#ctor">
            <summary>
            Creates an instance of the MetadataDictionary class.
            </summary>
            <remarks>
            The new instance enables both reading and changing.
            <para>
            To create, consider use factories: Variable.CreateMetadata(),
            DataSet.CreateMetadata().</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.#ctor(System.Boolean)">
            <summary>
            Creates an instance of the MetadataDictionary class.
            </summary>
            <param name="readOnly">If true, returned collection is read only.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.#ctor(System.Boolean,System.Collections.Generic.Dictionary{System.String,System.Object})">
            <summary>
            Creates an instance of the MetadataDictionary class.
            </summary>
            <param name="readOnly"></param>
            <param name="dict"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.AreEquals(System.Object,System.Object)">
            <summary>
            Compares two metadata values (either null, scalars, or 1d-array).
            </summary>
            <param name="v1"></param>
            <param name="v2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.CheckValue(System.Object)">
            <summary>
            Checks whether the value satisfies constraints.
            If not, throws an exception.
            </summary>
            <param name="value"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.CheckKey(System.String)">
            <summary>
            Checks whether the key satisfies constraints.
            If not, throws an exception.
            </summary>
            <param name="key"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String)">
            <summary>
            Determines whether the metadata contains the committed entry with the given <paramref name="key"/>.
            </summary>
            <param name="key">The case sensitive key to locate in the collection.</param>
            <returns><value>true</value> if the collection contains an entry with the given key.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,System.Boolean)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,System.Boolean)">
            <summary>
            Determines whether the metadata contains the committed entry with the given <paramref name="key"/>.
            </summary>
            <param name="key">The key to locate in the collection.</param>
            <param name="ignoreCase">The value indicating whether the method should ignore the case of the key or not.</param>
            <returns><value>true</value> if the collection contains an entry with the given key.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Determines whether the metadata contains the committed entry with the given <paramref name="key"/>.
            </summary>
            <param name="key">The case sensitive to locate in the collection.</param>
            <param name="version">Version of the schema to locate the key in.</param>
            <returns><value>true</value> if the collection contains an entry with the given key; otherwise, <value>false</value>.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,System.Boolean)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)">
            <summary>
            Determines whether the metadata contains the committed entry with the given <paramref name="key"/>.
            </summary>
            <param name="key">The case sensitive to locate in the collection.</param>
            <param name="version">Version of the schema to locate the key in.</param>
            <param name="ignoreCase">The value indicating whether the method should ignore the case of the key or not.</param>
            <returns><value>true</value> if the collection contains an entry with the given key; otherwise, <value>false</value>.</returns>
            <remarks>
            <example>
            <code>
            dataSet.IsAutocommitEnabled = false;
            . . .
            
            Variable v = dataSet["var"];
            v.Metadata["custom"] = 10;
            
            Console.WriteLine(v.Metadata.ContainsKey("custom", SchemaVersion.Proposed)); // prints "True"
            dataSet.Commit();
            
            //Console.WriteLine(v.Metadata.ContainsKey("custom", SchemaVersion.Proposed)); // throws an exception
            Console.WriteLine(v.Metadata.ContainsKey("custom")); // prints "True"
            Console.WriteLine(v.Metadata.ContainsKey("Custom")); // prints "False"
            Console.WriteLine(v.Metadata.ContainsKey("Custom", false)); // prints "True"
            </code>
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,System.Boolean)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.ForEach(System.Action{System.Collections.Generic.KeyValuePair{System.String,System.Object}},Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Performs the specified action on each element of the metadata collection. 
            </summary>
            <param name="action">The Action{KeyValuePair{string,object}} to perform on each element of array.</param>
            <param name="version">The version of the metadata schema to get elements from.</param>
            <remarks>
            <example>
            Prints to the console all metadata entries of the variable with name "var":
            <code>
            Variable v = dataSet.Variables["var"];
            v.Metadata.ForEach( entry => Console.WriteLine(entry.Key + ": " + entry.Value), SchemaVersion.Committed );
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.GetComittedOtherwiseProposedValue``1(System.String)">
            <summary>
            If there is a committed version for the given key, the method returns it.
            If not, it returns the proposed version (or throws an exception if there is no one).
            </summary>
            <typeparam name="VType">Type of the resulting value for the given key.</typeparam>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.GetComittedOtherwiseProposedValue``1(System.String,``0)">
            <summary>
            If there is a committed version for the given key, the method returns it.
            If not, it returns the proposed version (or returns specified default value).
            </summary>
            <typeparam name="VType">Type of the resulting value for the given key.</typeparam>
            <param name="key">Key to get value for.</param>
            <param name="defaultValue">If the key not found returns this value.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.AsDictionary(Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Represents the metadata collection as a Dictionary{string,object}.
            </summary>
            <param name="version">Version of the schema to get elements from.</param>
            <returns>An instance of a <see cref="T:System.Collections.Generic.Dictionary`2"/> containing 
            all elements from the metadata collection.</returns>
            <remarks>
            <para>
            The method creates new instance of the <see cref="T:System.Collections.Generic.Dictionary`2"/> and
            copies all elements from the specified version of the metadata collection into
            that instance. Therefore, modification of the dictionary will not affect the metadata
            collection and vice versa.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.AsDictionary"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.AsDictionary">
            <summary>
            Represents the metadata collection as a <b>Dictionary{string,object}</b>.
            </summary>
            <returns>An instance of a <see cref="T:System.Collections.Generic.Dictionary`2"/> containing 
            all elements from the metadata collection.</returns>
            <remarks>
            See remarks for <see cref="M:Microsoft.Research.Science.Data.MetadataDictionary.AsDictionary(Microsoft.Research.Science.Data.SchemaVersion)"/>.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.AsDictionary(Microsoft.Research.Science.Data.SchemaVersion)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.AsReadOnly">
            <summary>
            Wraps committed elements of the metadata collection into 
            new read-only instance of the <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> class.
            </summary>
            <returns>Read-only <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> instance containg same inner collection.</returns>
            <remarks>
            <para>
            The returned metadata collection and the current one share the same inner collection
            of the committed elements. Therefore, after the source metadata collection is committed,
            new elements become available from the returned instance.
            </para>
            <para>
            The goal of the method is to create a read-only copy of the existing metadata collection that is always
            up-to-date.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.Clone(Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.Clone(Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)">
            <summary>
            Creates a shallow copy of the metadata collection.
            </summary>
            <param name="version">The version of the schema to clone.</param>
            <param name="readOnly">The value that determines that the resulting 
            collection is read only or not.</param>
            <returns>MetadataDictionary instance containing the metadata copy.</returns>
            <remarks>
            <para>
            If the <paramref name="version"/> is SchemaVersion.Proposed or SchemaVersion.Recent and
             the collection is modified, resulting collection contains both committed elements and
             proposed and is unchanged.
            </para>
            <para>
            If the <paramref name="version"/> is SchemaVersion.Proposed and the collection has no changes,
            an exception is thrown.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.AsReadOnly"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.Commit">
            <summary>
            Commits accumulated changes.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.ApplyChanges(Microsoft.Research.Science.Data.MetadataDictionary)">
            <summary>
            Applies given collection of changes (both committed and modified parts of its).
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.Rollback">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.IsValidKey(System.String)">
            <summary>Determines whether specified key is valid for the metadata collection.</summary>
            <param name="key">The strings to determine whether it can be a key.</param>
            <returns><value>true</value> if name is valid or false otherwise.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.IsValidFirstNameSymbolCategory(System.Globalization.UnicodeCategory)">
            <summary>Checks whether specified Unicode category is valid for first indentifier 
            symbol according to Python 3 specification</summary>
            <param name="cat">Unicode category</param>
            <returns>True for valid category or false otherwise</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.IsValidFirstNameSymbol(System.Char)">
            <summary>Checks whether specified symbol can be used as first indentifier 
            symbol according to Python 3 specification</summary>
            <param name="ch">Character</param>
            <returns>True for valid symbol or false otherwise</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.IsValidNextNameSymbol(System.Char)">
            <summary>Checks whether specified symbol can be used as non-first indentifier 
            symbol according to Python 3 specification</summary>
            <param name="ch">Character</param>
            <returns>True for valid symbol or false otherwise</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.MetadataDictionary.GetModified">
            <summary>
            Iterates through modified entries of the metadata dictionary.
            </summary>
            <returns></returns>
        </member>
        <member name="E:Microsoft.Research.Science.Data.MetadataDictionary.Changed">
            <summary>
            Occurs after an entry has been added or changed.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.MetadataDictionary.Changing">
            <summary>
            Occurs before an entry is about to be added or changed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataDictionary.ReadOnly">
            <summary>
            Gets the value indicating whether the metadata collection is read only or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataDictionary.HasChanges">
            <summary>
            Gets the value indicating whether the metadata collection has changes or not.
            </summary>
            <remarks>
            If a user changes metadata collection of a variable, the metadata collection,
            the variable and the DataSet become modified (i.e. their property HasChanges returns true).
            To commit changes, use <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>; to rollback them, use
            <see cref="M:Microsoft.Research.Science.Data.DataSet.Rollback"/> or <see cref="M:Microsoft.Research.Science.Data.Variable.Rollback"/>.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataDictionary.Count">
            <summary>
            Gets the number of metadata entries contained in the dictionary.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the metadata value for the given key and schema version.
            </summary>
            <param name="key">The name of the metadata entry to get.</param>
            <param name="version">Version of the DataSet schema.</param>
            <returns>Value corresponding to the given key.</returns>
            <remarks>
            <para>
            Type of the key is always <see cref="T:System.String"/>.
            Type of the property value is <see cref="T:System.Object"/>, but supported metadata value types 
            are constrained. See documentation for <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/> for the
            specification.
            </para>
            <para>
            Gets the value of the metadata entry corresponding to the given <paramref name="key"/>.
            The value is taken from the specified version of the schema (see <see cref="T:Microsoft.Research.Science.Data.SchemaVersion"/>).
            If the <paramref name="version"/> is SchemaVersion.Proposed and the collection has no changes,
            an exception is thrown.
            If the <paramref name="version"/> is SchemaVersion.Committed and the entry is just added
            to the collection and is not committed yet, an exception is thrown.
            </para>
            <para>
            If the given <paramref name="key"/> not found in the collection, an exception
            <see cref="T:System.Collections.Generic.KeyNotFoundException"/> is thrown.
            </para>
            <example>
            <code>
            dataSet.IsAutocommitEnabled = false;
            . . .
            Variable v = dataSet["var"];
            v.Metadata["custom"] = 10;
            dataSet.Commit();
            
            Console.WriteLine(v.Metadata["custom"]); // prints "10"
            
            v.Metadata["custom"] = 11;
            /* Now: v.HasChanges, v.Metadata.HasChanges and dataSet.HasChanges are true */
            
            Console.WriteLine(v.Metadata["custom"]); // prints committed value "10"
            Console.WriteLine(v.Metadata["custom", SchemaVersion.Proposed]); // prints "11"
            
            dataSet.Rollback();
            Console.WriteLine(v.Metadata["custom"]); // prints "10"
            // Console.WriteLine(v.Metadata["custom", SchemaVersion.Proposed]); // would throw an exception
            </code>
            </example>
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,System.Boolean)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.SchemaVersion"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,System.Boolean)">
            <summary>
            Gets the metadata value or sets new value for the given key (possibly case-insensitive).
            </summary>
            <param name="key">The name of the metadata attribute to get.</param>
            <param name="ignoreCase">The value determines whether the key is case-insensitive or not.</param>
            <returns>Value corresponding to the given key.</returns>
            <remarks>
            <para>
            The indexer returns committed values.
            See also remarks for <see cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>.
            </para>
            <example>
            The example demonstrates the capabilities of the indexer:
            <code>
            MetadataDictionary metadata = . . . ;
            
            metadata["Units"] = "meters";
            
            if(metadata.ContainsKey("units", true)) // case-insensitive
            {
            	Console.WriteLine(metadata["Units"]); // prints "meters"
            	Console.WriteLine(metadata["units"]); // throws an exception KeyNotFoundException
            	Console.WriteLine(metadata["units", true]); // prints "meters"
            	Console.WriteLine(metadata["UNITS", true]); // prints "meters"
            	Console.WriteLine(metadata["UnitS", true]); // prints "meters"		
            }
            </code>
            </example>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,System.Boolean)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.SchemaVersion"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion,System.Boolean)">
            <summary>
            Gets the metadata value or sets new value for the given key (possibly case-insensitive).
            </summary>
            <param name="key">The name of the metadata attribute to get.</param>
            <param name="ignoreCase">The value determines whether the key is case-insensitive or not.</param>
            <param name="version">Version of the DataSet schema.</param>
            <returns>Value corresponding to the given key.</returns>
            <remarks>
            <para>
            See remarks for <see cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>
            and example for <see cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,System.Boolean)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.MetadataDictionary.ContainsKey(System.String,System.Boolean)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,System.Boolean)"/>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.SchemaVersion"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String)">
            <summary>
            Gets the metadata value or sets new value for the given key.
            </summary>
            <param name="key">The name of the metadata attribute to get.</param>
            <returns>Value corresponding to the given key.</returns>
            <remarks>
            <para>
            The indexer returns committed values.
            See remarks for <see cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>.
            </para>
            <para>
            If the new value for the key is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.MetadataDictionary.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.SchemaVersion"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Variable"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.MetadataChanges.Item(System.String)">
            <summary>
            Gets the attribute value for the given <paramref name="key"/>.
            </summary>
            <param name="key">Key of the attribute to get.</param>
            <returns>Attribute value.</returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.MetadataContainerVariable">
            <summary>
            Designated to contain metadata dictionary without data.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableMetadataChangedEventHandler">
            <summary>
            
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableMetadataChangedEventArgs">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableMetadataChangedEventArgs.#ctor(System.String,System.Object)">
            <summary>
            
            </summary>
            <param name="key"></param>
            <param name="value"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableMetadataChangedEventArgs.Key">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableMetadataChangedEventArgs.Value">
            <summary>
            
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableMetadataChangingEventHandler">
            <summary>
            
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableMetadataChangingEventArgs">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableMetadataChangingEventArgs.#ctor(System.String,System.Object,System.Object)">
            <summary>
            
            </summary>
            <param name="key"></param>
            <param name="proposed"></param>
            <param name="old"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableMetadataChangingEventArgs.Key">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableMetadataChangingEventArgs.ProposedValue">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableMetadataChangingEventArgs.OldValue">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableMetadataChangingEventArgs.Cancel">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OrderedArray1d.IndexOf(System.Object)">
            <summary>
            Works as Array.BinarySearch()
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OrderedArray1d.IsOrdered(System.Array)">
            <summary>
            Determines the order of the array.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OrderedArray1d.IsOrdered``1(``0[])">
            <summary>
            Determines the order of the array.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OrderedArray1d.GetOrder(System.Array)">
            <summary>
            <para>Positive: ascend</para>
            <para>Negative: descend</para>
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OrderedArray1d.GetOrder``1(``0[])">
            <summary>
            <para>Positive: ascend</para>
            <para>Negative: descend</para>
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ArrayOrder">
            <summary>
            Describes an order of an array.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayOrder.None">
            <summary>
            An array is not ordered.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayOrder.NotChecked">
            <summary>
            An array is not checked for an order.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayOrder.Unknown">
            <summary>
            An array is ordered, but its order is still unknown.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayOrder.Ascendant">
            <summary>
            An array has an ascendant order.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ArrayOrder.Descendant">
            <summary>
            An array has a descendant order.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ReverseIndexSelection">
            <summary>
            Determines how to find out the value.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ReverseIndexSelection.Exact">
            <summary>
            Return an exact value when given coordinates are exactly found;
            otherwise, throw an exception.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ReverseIndexSelection.Nearest">
            <summary>
            If no exact value is found for given coordinates, take nearest exact value.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ReverseIndexSelection.Interpolation">
            <summary>
            If no exact value is found for given coordinates, interpolate the value from 
            its exact neighbours.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Range">
            <summary>
            Represents non-negative integer range with stride.
            </summary>
            <remarks>
            <para>An instance of the <see cref="T:Microsoft.Research.Science.Data.Range"/> struct can be instantiated
            using static methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class:
            <list type="table">
            <item><term><see cref="M:Microsoft.Research.Science.Data.DataSet.Range(System.Int32)"/></term>
            <description>Single index to choose.</description></item>
            <item><term><see cref="M:Microsoft.Research.Science.Data.DataSet.Range(System.Int32,System.Int32)"/></term>
            <description>A range of indices from "from" up to "to".</description></item>
            <item><term><see cref="M:Microsoft.Research.Science.Data.DataSet.Range(System.Int32,System.Int32,System.Int32)"/></term>
            <description>A range of indices with specified step.</description></item>
            <item><term><see cref="M:Microsoft.Research.Science.Data.DataSet.FromToEnd(System.Int32)"/></term>
            <description>A range of indices from "from" up to the maximum index for a given dimension.</description></item>
            <item><term><see cref="M:Microsoft.Research.Science.Data.DataSet.FromToEnd(System.Int32,System.Int32)"/></term>
            <description>A range of indices from "from" up to the maximum index for a given dimension with the specified step.</description></item>
            <item><term><see cref="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)"/></term>
            <description>Single index to choose and reduce this dimension so that the rank of the resulting array is less than the rank of the variable is read from.</description></item>
            </list>
            </para>
            <para>
            Ranges are used in the procedural API available as extensions methods for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
            class. See <see cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Range.#ctor(System.Int32,System.Int32,System.Int32)">
            <summary>
            
            </summary>
            <param name="origin"></param>
            <param name="stride"></param>
            <param name="count"></param>
            <remarks>
            <para>
            Negative count means that it is unlimited.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Range.ToString">
            <summary>
            Gets the string representation of the range.
            </summary>
            <returns></returns>
            <remarks>
            It is either "(empty)" or "([start]:[stride]:[final])"
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Range.Equals(System.Object)">
            <summary>
            </summary>
            <param name="obj"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Range.GetHashCode">
            <summary>
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Range.IsReduced">
            <summary>
            Gets the value indicating that the related dimension is to be reduced.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Range.Origin">
            <summary>
            Gets the starting value of the range.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Range.Stride">
            <summary>
            Gets the stride value.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Range.Count">
            <summary>
            Gets the number of values in the range.
            </summary>
            <remarks>
            <para>If the range <see cref="P:Microsoft.Research.Science.Data.Range.IsUnlimited"/>, gets -1.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Range.Last">
            <summary>
            Gets the last value of the range.
            </summary>
            <remarks>
            <para>If the range <see cref="P:Microsoft.Research.Science.Data.Range.IsUnlimited"/>, the property throws an exception.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Range.IsUnlimited">
            <summary>
            Gets the value indicating whether the range is unlimited.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Range.IsEmpty">
            <summary>
            Gets the value indicating that the range contains no values.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Rectangle">
            <summary>
            Represents multidimensional integer rectangle.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.#ctor(System.Int32[],System.Int32[])">
            <summary>
            Initialies an instance of the class.
            </summary>
            <param name="origin"></param>
            <param name="shape"></param>
            <remarks>
            <paramref name="origin"/> and <paramref name="shape"/> cannot be null.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.#ctor(System.Int32,System.Int32)">
            <summary>
            
            </summary>
            <param name="origin"></param>
            <param name="shape"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.#ctor(System.Int32)">
            <summary>
            
            </summary>
            <param name="rank"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.CombineWith(Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            Combines two rectangle returning the mimimal rectangle containg both rectangles.
            </summary>
            <param name="r"></param>
            <exception cref="T:System.ArgumentException">Different ranks.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.ToString">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.Equals(System.Object)">
            <summary>
            
            </summary>
            <param name="obj"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.GetHashCode">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.HasIntersection(Microsoft.Research.Science.Data.Rectangle,Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            Checks whether two rectangles intersect or not.
            </summary>
            <param name="r1"></param>
            <param name="r2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.Combine(Microsoft.Research.Science.Data.Rectangle,Microsoft.Research.Science.Data.Rectangle)">
            <summary>
            Combines two rectangle returning the mimimal rectangle containg both rectangles.
            </summary>
            <param name="r1"></param>
            <param name="r2"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Rectangle.EntireShape(System.Int32[])">
            <summary>
            Gets the rectangle with zero origin and given shape.
            </summary>
            <param name="shape">Shape of the resulting rectangle.</param>
            <returns>The rectangle.</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Rectangle.IsEmpty">
            <summary>
            Gets the value indicating whether the rectangle is empty or not.
            </summary>
            <remarks>
            <para>
            Rectangle is empty if its shape is null or contains only zeros.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Rectangle.Origin">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Rectangle.Shape">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Rectangle.Rank">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Rectangle.EmptyRectangle">
            <summary>
            Gets an empty rectangle (i.e. its origin and shape are null).
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.RefVariable`1">
            <summary>
            RefVariable is a special kind of variables whose purpose is to refer another variable.
            <remarks>
            It enables adding of a variable to not native data set.
            Data operation applied to the reference are translated to the target variable.
            Both target and reference variables share the data changing as the change of its inner state.
            Both target and reference variables share the metadata collection.
            Names of dimensions might change independently and don't cause another variable to be changed.
            RefVariable allows to extend a collection of coordinate systems of the target variable with its own coordinate system.
            </remarks>
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.IRefVariable">
            <summary>
            Provides non-generic access to the reference variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.IRefVariable.UpdateChanges(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            Updates the reference variable on the basis of custom changes of
            its referenced variable.
            </summary>
            <param name="changes"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.IRefVariable.ReferencedVariable">
            <summary>
            Gets the referenced variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariable`1.PutData(System.Int32[],System.Array)">
            <summary>
            
            </summary>
            <param name="origin"></param>
            <param name="a"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariable`1.ReadShape">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariable`1.GetData(System.Int32[],System.Int32[])">
            <summary>
            
            </summary>
            <param name="origin"></param>
            <param name="shape"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariable`1.ToString">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariable`1.Microsoft#Research#Science#Data#IRefVariable#UpdateChanges(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            Updates the reference variable on the basis of custom changes of
            its referenced variable.
            </summary>
            <param name="customChanges"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.RefVariable`1.ReferencedVariable">
            <summary>
            Gets the refenced variable instance.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.RefVariable`1.Metadata">
            <summary>
            Gets the shared metadata collection.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.RefVariableMetadata">
            <summary>
            RefVariableMetadata is a wrapper of an existing variable's metadata with 
            some additional capabilities.
            </summary>
            <remarks>
            <para>The <paramref name="hiddenEntries"/> and <paramref name="readonlyEntries"/> parameters 
            allow to make some metadata entries indpendent from the metadata of the underlying variable.
            These parameters can be null and this will be considered as an empty collection.</para>
            <para>Two entries are always independent from the underlying metadata. These are
            the name and the provenance entries of the variable's metadata.</para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.RefVariableMetadata.target">
            <summary>The target variable that contains referred metadata.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.RefVariableMetadata.hiddenEntries">
            <summary>Collection of keys which are not to be inherited from the underlying metadata.
            These entries are changed independently.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.RefVariableMetadata.readonlyEntries">
            <summary>Collection of keys that cannot be changed through this collection.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.RefVariableMetadata.proposedMetadataEntries">
            <summary>Collection of entries currently being handled. This collection should
            enable correct concurrent work on simultaneous changing of the target and this collections.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariableMetadata.#ctor(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Creates an instance of the RefVariableMetadata class.
            </summary>
            <param name="var">The target variable that contains referred metadata.</param>
            <remarks>
            See remarks for the <see cref="T:Microsoft.Research.Science.Data.RefVariableMetadata"/> class.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariableMetadata.#ctor(Microsoft.Research.Science.Data.Variable,System.Collections.Generic.IList{System.String})">
            <summary>
            Creates an instance of the RefVariableMetadata class.
            </summary>
            <param name="var">The target variable that contains referred metadata.</param>
            <param name="hiddenEntries">Collection of keys which are not to be inherited from the underlying metadata.
            These entries are changed independently.</param>
            <remarks>
            See remarks for the <see cref="T:Microsoft.Research.Science.Data.RefVariableMetadata"/> class.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.RefVariableMetadata.#ctor(Microsoft.Research.Science.Data.Variable,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Creates an instance of the RefVariableMetadata class.
            </summary>
            <param name="var">The target variable that contains referred metadata.</param>
            <param name="hiddenEntries">Collection of keys which are not to be inherited from the underlying metadata.
            These entries are changed independently.</param>
            <param name="readonlyEntries">Collection of keys that cannot be changed through this collection.</param>
            <remarks>
            See remarks for the <see cref="T:Microsoft.Research.Science.Data.RefVariableMetadata"/> class.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ScaledVariable`2">
            <summary>
            Represents a variable which values are linear function of another underlying variable.
            </summary>
            <typeparam name="DataType">Natural data representation: Single, Double or DateTime</typeparam>
            <typeparam name="RawType">Storage data representation: Single, Double, or any integer type except Decimal and UInt64</typeparam>
            <remarks>
            <para>Changes to this variable propagate to the underlying variable. 
            Changes to the underlying variable are reflected in this variable.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ScaledVariable`2.#ctor(Microsoft.Research.Science.Data.Variable{`1},`0,`0,System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Initializes an instance of ScaledVariable.
            </summary>
            <param name="rawVariable">Underlying storage variable</param>
            <param name="scale">Scale factor</param>
            <param name="offset">Offset</param>
            <param name="name">Scaled variable name</param>
            <param name="hiddenEntries">Attributes that are not shared with the source variable.</param>
            <param name="readonlyEntries">Shared with source variable attributes that cannot be changed through this variable.</param>
            <remarks>
            <para>Only limited set of primitive blittable type parameters are supported by this generic variable. 
            Use <see cref="T:Microsoft.Research.Science.Data.LambdaTransformVariable`2"/> for other data types.</para>
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableSchema">
            <summary>Provides structure information for a variable.</summary>
            <remarks>This class is intended to be immutable, but metadata field
            and corresponding property allow modify operations.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableSchema.ToString">
            <summary>
            Represents the schema as string in short.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.ID">
            <summary>
            Gets the ID of the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.ChangeSet">
            <summary>
            Gets the changeset of the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.Name">
            <summary>
            Gets the name of the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.TypeOfData">
            <summary>
            Gets the data type of the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.Dimensions">
            <summary>
            Gets the read onlt dimension lists the variable depends on.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.CoordinateSystems">
            <summary>
            Gets the coordinate systems the variable is defined in.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.Metadata">
            <summary>
            Gets the metadata collection.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableSchema.Rank">
            <summary>
            Gets the rank of the variable.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CoordinateSystemSchema">
            <summary>Provides structure information for a coordinate system.</summary>
            <remarks>This class is immutable.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemSchema.#ctor(System.String,System.Int32[])">
            <summary>Creates an instance of the CoordinateSystemSchema</summary>
            <param name="name">Name of the coordinate system.</param>
            <param name="axes">IDs of variables those are axes for the coordinate system.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemSchema.ToString">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemSchema.Name">
            <summary>Gets the name of the coordinate system.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemSchema.AxesID">
            <summary>Gets an array of the IDs of the variables those are axes for the coordinate system.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemSchema.AxesCount">
            <summary>Gets the number of axes in the coordinate system.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetSchema">
            <summary>Provides structure information for a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</summary>
            <remarks>This class is immutable.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetSchema.GetDimensions">
            <summary>
            Gets an array of dimensions of the DataSet.
            </summary>
            <returns>An array of <see cref="T:Microsoft.Research.Science.Data.Dimension"/>.</returns>
            <remarks>
            If the schema corresponds to the proposed version of the DataSet and
            some dimension differs for different variables, in the returning array the dimension
            has length equal to <c>-1</c>.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetSchema.DataSetGuid">
            <summary>
            Gets the unique identifier of the DataSet.
            </summary>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.DataSetGuid"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetSchema.Version">
            <summary>
            Gets the changeset number of the DataSet.
            </summary>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.Version"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetSchema.URI">
            <summary>
            Gets the DataSet URI.
            </summary>
            <seealso cref="P:Microsoft.Research.Science.Data.DataSet.URI"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetSchema.ConstructionString">
            <summary>
            Gets the DataSet URI.
            </summary>
            <remarks>
            The property is obsolete. Use <see cref="P:Microsoft.Research.Science.Data.DataSetSchema.URI"/> instead.</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetSchema.Variables">
            <summary>
            Gets an array of the variables contained in the DataSet.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.DataSetSchema.CoordinateSystems">
            <summary>
            Gets an array of the coordinate systems contained in the DataSet.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.SchemaVersion">
            <summary>
            Specifies the schema version.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.SchemaVersion.Committed">
            <summary>
            Represents committed unmodified elements.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.SchemaVersion.Proposed">
            <summary>
            Represents modified or added elements.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.SchemaVersion.Recent">
            <summary>If the Proposed version is available, it is used; otherwise, the Committed version is used.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.StriddenVariable`1">
            <summary>
            The computational variable that represents a result of striding of another variable.
            </summary>
            <typeparam name="DataType">Type of a data element.</typeparam>
        </member>
        <member name="T:Microsoft.Research.Science.Data.IStriddenVariable">
            <summary>
            Represents a stridden transformation variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.IStriddenVariable.SetIndexSpaceOrigin(System.Int32[])">
            <summary>
            Updates the origin parameter of the striding.
            </summary>
            <param name="origin">Starting indices for a stridden variable.</param>
            <remarks>
            <para>Read more in <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/></para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.StriddenVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[],Microsoft.Research.Science.Data.Variable{`0},System.Int32[],System.Int32[],System.Int32[],System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Instantiates and returns a StriddenVariable object.
            </summary>
            <param name="dataSet"></param>
            <param name="dims"></param>
            <param name="name"></param>
            <param name="sourceVariable">The variable that is a data source for the computation.</param>
            <param name="origin">origin indices for striding.</param>
            <param name="stride">A stride.</param>
            <param name="count">A number of values to get from the source variable. If null, always takes as much as possible.</param>
            <param name="hiddenEntries">Attributes that are not shared with the source variable.</param>
            <param name="readonlyEntries">Shared with source variable attributes that cannot be changed through this variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.StriddenVariable`1.PrepareHiddenEntries(System.Collections.Generic.IList{System.String})">
            <summary>
            Adds special metadata attributes describing the striding. See also StriddenVariableKeys class.
            </summary>
            <param name="hiddenEntries"></param>
            <returns>Updates entries.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.StriddenVariable`1.PrepareReadonlyEntries(System.Collections.Generic.IList{System.String})">
            <summary>
            Adds special metadata attributes describing the striding. See also StriddenVariableKeys class.
            </summary>
            <param name="readonlyEntries"></param>
            <returns>Updates entries.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.StriddenVariable`1.InnerUpdateChanges(Microsoft.Research.Science.Data.DataSet.Changes,System.Int32[])">
            <summary>
            Completely updates shape and affected rect when "origin" changes and 
            possibly source variable changed.
            </summary>
            <param name="changes"></param>
            <param name="origin"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.StriddenVariableKeys">
            <summary>
            Contains metadata attributes names for a stridden variable those
            describe a striding.
            </summary>
            <remarks>
            <para>Read more in <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/></para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.StriddenVariableKeys.KeyForOrigin">
            <summary>
            Name of an attribute describing the origin parameter of striding.
            </summary>
            <remarks>
            <para>Read more in <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/></para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.StriddenVariableKeys.KeyForStride">
            <summary>
            Name of an attribute describing the string parameter of striding.
            </summary>
            <remarks>
            <para>Read more in <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/></para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.StriddenVariableKeys.KeyForCount">
            <summary>
            Name of an attribute describing the count parameter of striding.
            </summary>
            <remarks>
            <para>Read more in <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/></para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.StriddenVariableKeys.KeyForSourceDims">
            <summary>
            Name of an attribute containing dimensions names of the source variable.
            </summary>
            <remarks>
            <para>Read more in <see cref="M:Microsoft.Research.Science.Data.DataSet.StrideVariable``1(Microsoft.Research.Science.Data.Variable{``0},System.Int32[],System.Int32[],System.Int32[],System.String,System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})"/></para>
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.PointToPointTransformationVariable`2">
            <summary>
            Represents an abstract computational variable performing a reversible or not reversible
            point-to-point transformation of a source variable.
            </summary>
            <typeparam name="SourceDataType">Type of data for the underlying variable.</typeparam>
            <typeparam name="ResultDataType">Type of data for the output variable.</typeparam>
        </member>
        <member name="M:Microsoft.Research.Science.Data.PointToPointTransformationVariable`2.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,Microsoft.Research.Science.Data.Variable{`1},System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="sourceVariable">The variable this computational variable is based on.</param>
            <param name="dims"></param>
            <param name="name"></param>
            <param name="sds">
            </param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.PointToPointTransformationVariable`2.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,Microsoft.Research.Science.Data.Variable{`1},System.String[],System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="hiddenEntries">Collection of keys which are not to be inherited from the underlying metadata.
            These entries are changed independently.</param>
            <param name="readonlyEntries">Collection of keys that cannot be changed through this collection.</param>
            <param name="sourceVariable">The variable this computational variable is based on.</param>
            <param name="sds"></param>
            <param name="name"></param>
            <param name="dims"></param>
            <remarks>
            <para>The <paramref name="hiddenEntries"/> and <paramref name="readonlyEntries"/> parameters 
            allow to make some metadata entries indpendent from the metadata of the underlying variable.
            These parameters can be null and this will be considered as an empty collection.</para>
            <para>Two entries are always independent from the underlying metadata. These are
            the name and the provenance entries of the variable's metadata.</para>
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.TypeUtils">
            <summary>
            Contains utilties facilitating work with <see cref="T:System.Type"/> instance.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsRealNumber(System.Type)">
            <summary>
            
            </summary>
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsIntegerNumber(System.Type)">
            <summary>
            
            </summary>
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsDateTime(System.Type)">
            <summary>
            
            </summary>
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsNumeric(System.Type)">
            <summary>
            Checks whether the type is an integer or float number.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsEnum(System.Type)">
            <summary>
            
            </summary>
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.Subtract(System.Object,System.Object)">
            <summary>
            
            </summary>
            <param name="a"></param>
            <param name="b"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.GetDefaultMissingValue(System.Type)">
            <summary>
            
            </summary>
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.Parse(System.String,System.Type,System.Object)">
            <summary>
            
            </summary>
            <param name="s"></param>
            <param name="type"></param>
            <param name="missingValue"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.Parse(System.String,System.Type,System.Object,System.IFormatProvider)">
            <summary>
            Converts a string into a type specified.
            </summary>
            <param name="s"></param>
            <param name="type"></param>
            <param name="missingValue"></param>
            <param name="formatProvider"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.Parse(System.String,System.Type)">
            <summary>
            Converts a string into a type specified.
            </summary>
            <param name="s"></param>
            <param name="type"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.Parse(System.String,System.Type,System.IFormatProvider)">
            <summary>
            Converts a string into a type specified.
            </summary>
            <param name="s"></param>
            <param name="type"></param>
            <param name="formatProvider"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.SerializeToString(System.Object,System.Char)">
            <summary>
            Represents an object as a string. 
            If the object is IEnumerable, elements are separated
            with given separator.
            </summary>
            <param name="o"></param>
            <param name="separator"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsDateTime(System.String,System.IFormatProvider)">
            <summary>
            Checks the type of the value in string.
            </summary>
            <param name="s"></param>
            <param name="formatProvider"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsInt(System.String,System.IFormatProvider)">
            <summary>
            Checks the type of the value in string.
            </summary>
            <param name="s"></param>
            <param name="formatProvider"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsDouble(System.String,System.IFormatProvider)">
            <summary>
            Checks the type of the value in string.
            </summary>
            <param name="s"></param>
            <param name="formatProvider"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.IsBool(System.String)">
            <summary>
            Checks the type of the value in string.
            </summary>
            <param name="s"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.TypeUtils.GetElementType(System.Array)">
            <summary>
            Checks the type of the value in string.
            </summary>
            <param name="a"></param>
            <returns></returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Utilities.DataSetCloning">
            <summary>
            Contains methods to clone datasets.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.DataSetCloning.Clone(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.DataSetUri,Microsoft.Research.Science.Data.Utilities.DataSetCloning.ProgressUpdater)">
            <summary>
            Copies given dataset into dataset determined by <paramref name="dstUri"/>.
            </summary>
            <param name="src">Original dataset to clone.</param>
            <param name="dstUri">URI of the destination dataset.</param>
            <param name="updater">Delegate accepting update progressm notifications.</param>
            <returns>New instance of <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.</returns>
            <remarks>
            This method splits the original dataser into parts and therefore is able
            to clone very large datasets not fitting to memory.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.DataSetCloning.Clone(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.Utilities.DataSetCloning.ProgressUpdater)">
            <summary>
            Copies given dataset into another dataset.
            </summary>
            <param name="src">Original dataset to copy.</param>
            <param name="dst">Destination dataset.</param>
            <param name="updater">Delegate accepting update progressm notifications.</param>
            <returns>New instance of <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.</returns>
            <remarks>
            This method splits the original dataser into parts and therefore is able
            to clone very large datasets not fitting to memory.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.DataSetCloning.Clone(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.DataSetUri)">
            <summary>
            Copies given dataset into dataset determined by <paramref name="dstUri"/> and prints progress into console.
            </summary>
            <param name="src">Original dataset to clone.</param>
            <param name="dstUri">URI of the destination dataset.</param>
            <returns>New instance of <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.</returns>
            <remarks><para>
            This method splits the original dataser into parts and therefore is able
            to clone very large datasets not fitting to memory.</para>
            <para>Progress is printed out into the console window.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Utilities.DataSetCloning.Clone(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.DataSetUri,Microsoft.Research.Science.Data.Utilities.DataSetCloning.ProgressUpdater)"/>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CoordinateSystemAddedEventHandler">
            <summary>
            
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CoordinateSystemAddedEventArgs">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CoordinateSystemAddedEventArgs.#ctor(Microsoft.Research.Science.Data.CoordinateSystem)">
            <summary>
            
            </summary>
            <param name="cs"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CoordinateSystemAddedEventArgs.CoordinateSystem">
            <summary>
            Gets the coordinate system that has been added.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableChangeAction">
            <summary>
            Kind of changes in a variable.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.VariableChangeAction.PutData">
            <summary>Data array of a variable is changed.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.VariableChangeAction.UpdateMetadata">
            <summary>Metadata of a variable is changed.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableCommittingEventHandler">
            <summary>
            
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableCommittingEventArgs">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCommittingEventArgs.#ctor(Microsoft.Research.Science.Data.Variable,Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            
            </summary>
            <param name="var"></param>
            <param name="changes"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCommittingEventArgs.ProposedChanges">
            <summary>
            Get the proposed changes to be applied to the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCommittingEventArgs.Variable">
            <summary>
            Gets the variable that is being committed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCommittingEventArgs.Cancel">
            <summary>
            Gets or sets the value which indicates whether to cancel the commit or not.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableRolledBackEventHandler">
            <summary>
            
            </summary>
            <param name="sender"></param>
            <param name="e"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableRolledBackEventArgs">
            <summary>
            
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableRolledBackEventArgs.Variable">
            <summary>
            Gets the variable that has just been rolled back.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCommittedEventArgs.CommittedChanges">
            <summary>
            Gets the changes that have just been applied to the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCommittedEventArgs.Variable">
            <summary>
            Gets the variable that has just been committed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableChangedEventArgs.Variable">
            <summary>
            Gets the variable that is changed (but not committed yet).
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableChangedEventArgs.Action">
            <summary>
            Gets the kind of the change.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableChangedEventArgs.Changes">
            <summary>
            Get the proposed changes to be applied to the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableChangingEventArgs.Action">
            <summary>
            Gets the kind of the change.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableChangingEventArgs.ProposedChanges">
            <summary>
            Get the proposed changes to be applied to the variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableChangingEventArgs.Variable">
            <summary>
            Gets the variable that is being committed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableChangingEventArgs.Cancel">
            <summary>
            Gets or sets the value which indicates whether to cancel the commit or not.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.StrideRange">
            <summary>
            Represents a stride range which is a set of numbers 
            Xn = X0 + s*n, where 0 &lt;= n &lt; N.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.StrideRange.#ctor(System.Int32)">
            <summary>
            Creates a range with the only value <param name="singleValue"></param>.
            </summary>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.StrideRange.ToString">
            <summary>
            Returns the range as a string in the format "start:stride:end".
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.StrideRange.Start">
            <summary>
            Start value for the range.
            </summary>		
        </member>
        <member name="P:Microsoft.Research.Science.Data.StrideRange.Stride">
            <summary>
            Stride value for the range.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.StrideRange.Count">
            <summary>
            Number of values in the range.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.StrideRange.End">
            <summary>
            Last value of the range.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableCollection">
            <summary>
            Represents a dynamic variable collection with notifications.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.#ctor">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.#ctor(System.Collections.Generic.IEnumerable{Microsoft.Research.Science.Data.Variable})">
            <summary>
            
            </summary>
            <param name="collection"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.GetByID(System.Int32)">
            <summary>
            Gets the variable by its ID.        
            </summary>
            <remarks>
            An exception is thrown if the variable is not found.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.VariableCollection.TryGetById(System.Int32,Microsoft.Research.Science.Data.Variable@)"/> 
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.Contains(System.String)">
            <summary>
            
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.Contains(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Returns the value, indicating whether the collection contains specified variable
            (references are included to search).
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.TryGetById(System.Int32,Microsoft.Research.Science.Data.Variable@)">
            <summary>
            Gets the variable by its ID.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.InsertFirst(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Adds the variable to the beggining of the collection.
            </summary>
            <param name="var"></param>
            <remarks>
            Adds the variable to the beginning of the collection so it is stored in the inverse order.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.Add(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Adds the variable to the collection.
            </summary>
            <param name="var"></param>
            <remarks>
            Adds the variable to the collection.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.Clear">
            <summary>
            Removes all the elements from the collection.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.GetReadOnlyCollection">
            <summary>
            Makes the read only copy of the collection.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.GetEnumerator">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.CopyTo(Microsoft.Research.Science.Data.Variable[],System.Int32)">
            <summary>
            Copies the elements of the ICollection to an Array, starting at a particular Array index.
            </summary>
            <param name="array"></param>
            <param name="arrayIndex"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.VariableCollection.Remove(Microsoft.Research.Science.Data.Variable)">
            <summary>
            This implementation always throws NotSupportedException.
            </summary>
            <param name="item"></param>
        </member>
        <member name="E:Microsoft.Research.Science.Data.VariableCollection.CollectionChanged">
            <summary>
            Fires when the collection is changed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCollection.Count">
            <summary>
            Gets the number of variables in the collection.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCollection.Item(System.Int32)">
            <summary>
            Gets the variable by its zero-based index.        
            </summary>
            <remarks>
            An exception is thrown if the variable is not found.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.VariableCollection.TryGetById(System.Int32,Microsoft.Research.Science.Data.Variable@)"/>     
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCollection.Item(System.String)">
            <summary>
            Gets the variable with specified committed name.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCollection.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the variable with specified name for specified version of schema.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCollection.IsReadOnly">
            <summary>
            Returns false.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCollectionChangedEventArgs.Action">
            <summary>
            Gets the action that caused the event.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VariableCollectionChangedEventArgs.AddedVariable">
            <summary>
            Gets the added variable.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VariableCollectionChangedAction">
            <summary>
            Determines the type of changes.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.VariableCollectionChangedAction.Clear">
            <summary>
            All variables removed from the collection.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.VariableCollectionChangedAction.Add">
            <summary>
            A variable is added to the collection.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ReadOnlyVariableCollection">
            <summary>
            Represents a read-only variable collection with supporting routines.
            </summary>
            <remarks>
            <para>
            The collection hides some variables from a user. These are: a variable to
            store global metadata (<see cref="P:Microsoft.Research.Science.Data.DataSet.Metadata"/>) and hidden variables.
            To get all variables, use <see cref="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.All"/> property.
            Also note, the <see cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema"/> methods return a schema
            containing description of all variables, including hidden and a global metadata variable.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.ToArray">
            <summary>
            Returns the array of variables.
            </summary>
            <returns></returns>
            <remarks>
            <para>
            A variable containing global metadata is excluded from the array.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.GetByID(System.Int32)">
            <summary>
            Gets the variable by its ID.
            </summary>
            <remarks>
            An exception is thrown if not found.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.TryGetByID(System.Int32,Microsoft.Research.Science.Data.Variable@)"/>  
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable not found.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.TryGetByID(System.Int32,Microsoft.Research.Science.Data.Variable@)">
            <summary>
            Tries to get the variable by its ID.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Contains(System.String)">
            <summary>
            
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Contains(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Returns the value, indicating whether the collection contains specified variable
            (references are included to search).
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.GetEnumerator">
            <summary>
            
            </summary>
            <returns></returns>
            <remarks>
            Doesn't enumerate global metadata variable.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Add(Microsoft.Research.Science.Data.Variable)">
            <summary>
            This implementation always throws NotSupportedException.
            </summary>
            <param name="item"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Clear">
            <summary>
            This implementation always throws NotSupportedException.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.CopyTo(Microsoft.Research.Science.Data.Variable[],System.Int32)">
            <summary>
            Copies all variables to the <paramref name="array"/> starting at the <paramref name="arrayIndex"/> .
            </summary>
            <param name="array"></param>
            <param name="arrayIndex"></param>
            <remarks>
            The variable containing global metadata is not copied.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Remove(Microsoft.Research.Science.Data.Variable)">
            <summary>
            This implementation always throws NotSupportedException.
            </summary>
            <param name="item"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Count">
            <summary>
            Gets the number of variables in the collection.
            </summary>
            <remarks>
            <para>
            This number doesn't include variable containing global metadata.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Item(System.String)">
            <summary>
            Gets the variable with specified committed name.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Item(System.Int32)">
            <summary>
            Gets the variable by its zero-based index.
            </summary>
            <remarks>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.TryGetByID(System.Int32,Microsoft.Research.Science.Data.Variable@)"/>  
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Item(System.String,Microsoft.Research.Science.Data.SchemaVersion)">
            <summary>
            Gets the variable with specified name for specified version of schema.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.Committed">
            <summary>
            Iterates through the collection of committed variables.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.All">
            <summary>
            Enumerates all variables of the collection.
            </summary>
            <remarks>
            The enumeration includes global metadata variable and hidden variables.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ReadOnlyVariableCollection.IsReadOnly">
            <summary>
            Always returns true.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions">
            <summary>
            Provides a set of extensions methods enabling work with <see cref="T:Microsoft.Research.Science.Data.DataSet"/> in a way close
            to a procedural API.
            </summary>
            <remarks>
            <para>
            The goal of the extensions is to enable simple data operations with minimum amount of code. 
            Additionally, it unifies the API with other languages like C, R, Python etc. 
            Note that these are just helper methods which will in fact call universal object model API.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSet"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,``0,System.String[])">
            <summary>
            Creates new variable with initial data and adds it to the data set.
            </summary>
            <typeparam name="D">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName">Name of the new variable.</param>
            <param name="data">Initial data of the variable.</param>
            <param name="dimensionNames">Names of new variable's dimensions.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If <paramref name="dimensionNames"/> are absent, the 
            <typeparamref name="D"/> type parameter must be an array type of proper rank. 
            E.g. <c>ds.Add&lt;double[,]&gt;("mat", new double[,]{{1},{2}})</c> creates a variable named "mat" 
            of type double and of rank 2.
            </para>
            <para>
            It is still possible to specify type parameter and dimensions of the variable:
            <c>ds.Add&lt;double[,]&gt;("mat", new double[,]{{1},{2}}, "x", "y")</c> also creates a variable named "mat" 
            of type double and of rank 2. 
            The syntax <c>ds.Add&lt;double&gt;("mat", new double[,]{{1},{2}}, "x", "y")</c> 
            is incorrect, but <c>ds.Add&lt;double&gt;("mat", 10.0)</c> creates a scalar variable with value 10.
            </para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String[])">
            <summary>
            Creates new variable and adds it to the data set.
            </summary>
            <typeparam name="D">A variable data type or an array of variable rank and data type.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName">Name of the new variable.</param>
            <param name="dimensionNames">Names of new variable's dimensions.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If <paramref name="dimensionNames"/> are absent, the 
            <typeparamref name="D"/> type parameter must be an array type of proper rank. 
            E.g. <c>ds.Add&lt;double[,]&gt;("mat")</c> creates a variable named "mat" 
            of type double and of rank 2.
            </para>
            <para>
            It is still possible to specify just type parameter and dimensions of the variable:
            <c>ds.Add&lt;double&gt;("mat", "x", "y")</c> also creates a variable named "mat" 
            of type double and of rank 2. The syntax <c>ds.Add&lt;double[,]&gt;("mat", "x", "y")</c> 
            is correct, too.
            </para>
            <example>
            <code>
            // Creates new data set:
            var ds = DataSet.Open("test.csv?openMode=create");
            // Adds new string scalar variable with name "str" to the data set:
            ds.Add&lt;string&gt;("str"); 
            // Data of the variable "str" is "data string":
            ds.PutData("str", "data string");
            // Adds new variable with name "int1" that is a 1d-array of int and depends on dimension "idx".
            // id2 contains unique identifier of the new variable.
            int id2 = ds.Add&lt;int[]&gt;("int1", "idx").ID;
            // Data of the variable "int1" is { 9, 8, 7, 6 }:
            ds.PutData(id2, new int[] { 9, 8, 7, 6 });
            // Adds new variable "double2" depending on two dimensions:
            ds.Add&lt;double&gt;("double2", "i1", "i2");
            // Adds new variable "double3" depending on 3 default dimensions:
            ds.Add&lt;double[, ,]&gt;("double3");
            // Prints the data set brief description:
            Console.WriteLine(ds);
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0)">
            <summary>
            Replaces all the variable data with a new one.
            </summary>
            <typeparam name="D">Must be a scalar type for a variable of rank 0 and an array type for other ranks.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to put data in.</param>
            <param name="data">New data of the variable.</param>
            <remarks>
            <para>The shape of the data must be greater or equal to the current shape of the variable.</para>
            <example>
            <code>
            // Creates new data set:
            var ds = DataSet.Open("test.csv?openMode=create");
            // Adds new string scalar variable with name "str" to the data set:
            ds.Add&lt;string&gt;("str"); 
            // Data of the variable "str" is "data string":
            ds.PutData("str", "data string");
            // Adds new variable with name "int1" that is a 1d-array of int and depends on dimension "idx".
            // id2 contains unique identifier of the new variable.
            int id2 = ds.Add&lt;int[]&gt;("int1", "idx").ID;
            // Data of the variable "int1" is { 9, 8, 7, 6 }:
            ds.PutData(id2, new int[] { 9, 8, 7, 6 });
            // Adds new variable "double2" depending on two dimensions:
            ds.Add&lt;double&gt;("double2", "i1", "i2");
            // Adds new variable "double3" depending on 3 default dimensions:
            ds.Add&lt;double[, ,]&gt;("double3");
            // Prints the data set brief description:
            Console.WriteLine(ds);
            </code>
            </example>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.String,``0)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0)"/>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0)">
            <summary>
            Replaces all the variable data with a new one.
            </summary>
            <typeparam name="D">Must be a scalar type for a variable of rank 0 and an array type for other ranks.</typeparam>
            <param name="dataset">Target DataSet.</param>
            <param name="predicate">Determines the variable to put data in.</param>
            <param name="data">New data of the variable.</param>
            <remarks>
            <para>The shape of the data must be greater or equal to the current shape of the variable.</para>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Updates a variable that satisfies the predicate:
            ds.PutData(v =&gt; v.Metadata["action"] == "toUpdate", 
            			new int[] { 9, 8, 7, 6 });
            </code>
            </example>
            </remarks>
            <exception cref="T:System.InvalidOperationException">
            Cannot unambiguously identify a variable in the data set.
            </exception>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.String,``0)"/>			
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.String,``0)">
            <summary>
            Replaces all the variable data with a new one.
            </summary>
            <typeparam name="D">Must be a scalar type for a variable of rank 0 and an array type for other ranks.</typeparam>
            <param name="dataset">Target DataSet.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to put data in.</param>
            <param name="data">New data of the variable.</param>
            <remarks>
            <para>The shape of the data must be greater or equal to the current shape of the variable.</para>
            <para>The method finds a variable with name <paramref name="variableName"/>, given rank and
            type of data (determined from the arguments) and puts the data into it.
            If a variable is not found or there are several variables with the name, an exception is thrown.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Updates a one-dimensional variable with name "int1" and type of data int:
            ds.PutData("int1", new int[] { 9, 8, 7, 6 });
            </code>
            </example>
            </remarks>
            <exception cref="T:System.InvalidOperationException">
            Cannot unambiguously identify a variable in the data set.
            </exception>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0)"/>		
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0,System.Int32[])">
            <summary>
            Sets one value in the variable data.
            </summary>
            <typeparam name="D">Must be a scalar type.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to put data in.</param>
            <param name="data">New value.</param>
            <param name="indices">Indices of the value to put.</param>
            <remarks>
            <example>
            <code>
            // Creates new data set:
            var ds = DataSet.Open("test.csv?openMode=create");
            // Adds new string scalar variable with name "str" to the data set:
            ds.Add&lt;string&gt;("str"); 
            // Data of the variable "str" is "data string":
            ds.PutData("str", "data string");
            // Adds new variable with name "int1" that is a 1d-array of int and depends on dimension "idx".
            // id2 contains unique identifier of the new variable.
            int id2 = ds.Add&lt;int[]&gt;("int1", "idx").ID;
            // Sets first element of the id2 to 7:
            ds.PutData(id2, 7, 0);		
            </code>
            </example>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.String,``0)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0)"/>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0,System.Int32[])">
            <summary>
            Sets one value in the variable data.
            </summary>
            <typeparam name="D">Must be a scalar type.</typeparam>
            <param name="dataset">Target DataSet.</param>
            <param name="predicate">Determines the variable to put data in.</param>
            <param name="data">New value.</param>
            <param name="indices">Indices of the value to put.</param>
            <remarks>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>	
            </remarks>
            <exception cref="T:System.InvalidOperationException">
            Cannot unambiguously identify a variable in the data set.
            </exception>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.String,``0)"/>			
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.String,``0,System.Int32[])">
            <summary>
            Sets one value in the variable data.
            </summary>
            <typeparam name="D">Must be a scalar type.</typeparam>
            <param name="dataset">Target DataSet.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to put data in.</param>
            <param name="data">New value.</param>
            <param name="indices">Indices of the value to put.</param>
            <remarks>
            <para>The method finds a variable with name <paramref name="variableName"/>, given rank and
            type of data (determined from the arguments) and put the data into it.
            If a variable is not found or there are several variables with the name, an exception is thrown.</para>
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Updates a one-dimensional variable with name "int1" and type of data int and
            // sets its first element value to 7:
            ds.PutData("int1", 7, 0);
            </code>
            </example>
            </remarks>
            <exception cref="T:System.InvalidOperationException">
            Cannot unambiguously identify a variable in the data set.
            </exception>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0)"/>		
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0,Microsoft.Research.Science.Data.Range[])">
            <summary>
            Puts a range of values into a variable.
            </summary>
            <typeparam name="D">D must a scalar or an array of a proper rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to put data in.</param>
            <param name="data">Data to put.</param>
            <param name="range">Range of the data to set.</param>
            <remarks>
            <para>
            Number of <paramref name="range"/> elements must be equal to the rank of a variable.
            </para>
            <para>
            Type <typeparamref name="D"/> is a type of the input data. Its rank depends on rank
            of the variable and how many "reduce" ranges are presented in the <paramref name="range"/>
            (see also <see cref="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)"/>).
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Range"/> can be created using static methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.
            Read remarks for the <see cref="T:Microsoft.Research.Science.Data.Range"/> struct.
            </para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0,Microsoft.Research.Science.Data.Range[])">
            <summary>
            Puts a range of values into a variable.
            </summary>
            <typeparam name="D">D must a scalar or an array of a proper rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to put data in.</param>
            <param name="data">Data to put.</param>
            <param name="range">Range of the data to set.</param>
            <remarks>
            <para>
            Number of <paramref name="range"/> elements must be equal to the rank of a variable.
            </para>
            <para>
            Type <typeparamref name="D"/> is a type of the input data. Its rank depends on rank
            of the variable and how many "reduce" ranges are presented in the <paramref name="range"/>
            (see also <see cref="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)"/>).
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Range"/> can be created using static methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.
            Read remarks for the <see cref="T:Microsoft.Research.Science.Data.Range"/> struct.
            </para>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutData``1(Microsoft.Research.Science.Data.DataSet,System.String,``0,Microsoft.Research.Science.Data.Range[])">
            <summary>
            Puts a range of values into a variable.
            </summary>
            <typeparam name="D">D must a scalar or an array of a proper rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to get data from.</param>        
            <param name="data">Data to put.</param>
            <param name="range">Range of the data to set.</param>
            <remarks>
            <para>
            Number of <paramref name="range"/> elements must be equal to the rank of a variable.
            </para>
            <para>
            Type <typeparamref name="D"/> is a type of the input data. Its rank depends on rank
            of the variable and how many "reduce" ranges are presented in the <paramref name="range"/>
            (see also <see cref="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)"/>).
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Range"/> can be created using static methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.
            Read remarks for the <see cref="T:Microsoft.Research.Science.Data.Range"/> struct.
            </para>
            <para>The method finds a variable with name <paramref name="variableName"/>, given rank and
            type of data (determined from the arguments) and gets the data from it.
            If a variable is not found, an exception is thrown.</para>	
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
            <example>
            <code>
            // Let variable "var2d" has rank 2
            ds.PutData&lt;double[]&gt;( "var2d", new double[] { 1, 2, 3 }, 
             DataSet.Range(0,2), // 1st dim: from 0 to 2
             DataSet.ReduceDim(1)); // 2nd dim is reduced in the input data set and its index is 1
            </code>
            </example>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to append.</param>
            <param name="data">Data to append.</param>
            <remarks>
            <para>The shape of the variable grows along the first dimension. 
            For example, for a matrix (row,column) this will be adding more rows.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            <example>
            <code>
            // Creates new data set:
            var ds = DataSet.Open("test.csv?openMode=create");
            // Adds new variable with name "int1" that is a 1d-array of int and depends on dimension "idx".
            // id2 contains unique identifier of the new variable.
            int id2 = ds.Add&lt;int[]&gt;("int1", "idx").ID;
            // Data of the variable "int1" is { 9, 8, 7, 6 }:
            ds.PutData(id2, new int[] { 9, 8, 7, 6 });
            // Adds one more value to the end of the variable:
            ds.Append(id2, 5);
            // Now id2 contains { 9, 8, 7, 6, 5 }
            </code>
            </example>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to append.</param>
            <param name="data">Data to append.</param>
            <remarks>
            <para>The shape of the variable grows along the first dimension. 
            For example, for a matrix (row,column) this will be adding more rows.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>	
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.String,``0)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to put data in.</param>
            <param name="data">Data to append.</param>
            <remarks>
            <para>The shape of the variable grows along the first dimension. 
            For example, for a matrix (row,column) this will be adding more rows.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>	
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0,System.Int32)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to append.</param>
            <param name="data">Data to append.</param>
            <param name="dimension">Zero-based index of the variable's dimension to append by.</param>	
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>
            <remarks>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0,System.Int32)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to append.</param>
            <param name="data">Data to append.</param>
            <param name="dimension">Zero-based index of the variable's dimension to append by.</param>	
            <remarks>
            <para>The shape of the variable grows along the first dimension. 
            For example, for a matrix (row,column) this will be adding more rows.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>	
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.String,``0,System.Int32)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to put data in.</param>
            <param name="data">Data to append.</param>
            <param name="dimension">Zero-based index of the variable's dimension to append by.</param>	
            <remarks>
            <para>The shape of the variable grows along the first dimension. 
            For example, for a matrix (row,column) this will be adding more rows.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>	
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.Int32,``0,System.String)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to append.</param>
            <param name="data">Data to append.</param>
            <param name="dimension">Name of the variable's dimension to append by.</param>	
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>
            <remarks>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},``0,System.String)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to append.</param>
            <param name="data">Data to append.</param>
            <param name="dimension">Name of the variable's dimension to append by.</param>	
            <remarks>
            <para>The shape of the variable grows along the first dimension. 
            For example, for a matrix (row,column) this will be adding more rows.</para>	
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Append``1(Microsoft.Research.Science.Data.DataSet,System.String,``0,System.String)">
            <summary>
            Appends a variable with data.
            </summary>
            <typeparam name="D">Must be an array type with rank equal or one less the variable rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to put data in.</param>
            <param name="data">Data to append.</param>
            <param name="dimension">Name of the variable's dimension to append by.</param>	
            <remarks>
            <para>The shape of the variable grows along the first dimension. 
            For example, for a matrix (row,column) this will be adding more rows.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>	
            </remarks>
            <exception cref="T:System.ObjectDisposedException">DataSet is disposed.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.ReadOnlyException">Variable is read-only.</exception>
            <exception cref="T:System.ArgumentNullException"></exception>
            <exception cref="T:System.ArgumentException">Arguments are incorrect.</exception>
            <exception cref="T:Microsoft.Research.Science.Data.CannotPerformActionException">Cannot put data into the variable.</exception>
            <exception cref="T:System.Collections.Generic.KeyNotFoundException">Variable is not found.</exception>	
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.Int32)">
            <summary>
            Gets all data from a variable.
            </summary>
            <typeparam name="D">Must be a scalar type for a variable of rank 0 and an array type for other ranks.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to get data from.</param>
            <returns>Data of the variable.</returns>
            <remarks>
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Gets a value from a scalar variable of type double with given id:
            int varID = ...;
            double val = ds.GetData&lt;double&gt;(varID); 
            // Gets an array from a 1d-variable of type string:
            int var2ID = ...;
            string[] strings = ds.GetData&lt;string[]&gt;(var2ID);
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean})">
            <summary>
            Gets all data from a variable.
            </summary>
            <typeparam name="D">Must be a scalar type for a variable of rank 0 and an array type for other ranks.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to get data from.</param>
            <returns>Data of the variable.</returns>
            <remarks>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.String)">
            <summary>
            Gets all data from a variable.
            </summary>
            <typeparam name="D">Must be a scalar type for a variable of rank 0 and an array type for other ranks.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to get data from.</param>
            <returns>Data of the variable.</returns>
            <remarks>
            <para>The method finds a variable with name <paramref name="variableName"/>, given rank and
            type of data (determined from the arguments) and gets the data from it.
            If a variable is not found or there are several variables with the name, an exception is thrown.</para>	
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Gets a value from a scalar variable named "str" of type string:
            string val = ds.GetData&lt;double&gt;("str"); 
            // Gets an array from a 1d-variable named "int1" of type int:
            int[] data = ds.GetData&lt;int[]&gt;("int1");
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,System.Int32[])">
            <summary>
            Gets a single value from a variable.
            </summary>
            <typeparam name="D">Must be a scalar type equal to the variable data type.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to get data from.</param>
            <param name="indices">Indices of the value to get.</param>
            <returns>Data of the variable.</returns>
            <remarks>
            <para>Number of indices must be equal to the rank of a variable. For a scalar variable,
            <paramref name="indices"/> can be either null or int[0].</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},System.Int32[])">
            <summary>
            Gets a single value from a variable.
            </summary>
            <typeparam name="D">Must be a scalar type equal to the variable data type.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to get data from.</param>
            <param name="indices">Indices of the value to get.</param>
            <returns>Data of the variable.</returns>
            <remarks>
            <para>Number of indices must be equal to the rank of a variable. For a scalar variable,
            <paramref name="indices"/> can be either null or int[0].</para>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.String,System.Int32[])">
            <summary>
            Gets a single value from a variable.
            </summary>
            <typeparam name="D">Must be a scalar type equal to the variable data type.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to get data from.</param>
            <param name="indices">Indices of the value to get.</param>
            <returns>Data of the variable.</returns>
            <remarks>
            <para>Number of indices must be equal to the rank of a variable. For a scalar variable,
            <paramref name="indices"/> can be either null or int[0].</para>
            <para>The method finds a variable with name <paramref name="variableName"/>, given rank and
            type of data (determined from the arguments) and gets the data from it.
            If a variable is not found, an exception is thrown.</para>	
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Gets a value from a scalar variable named "str" of type string:
            string val = ds.GetData&lt;double&gt;("str"); 
            // Gets the 3rd (index starts from zero) value from a 1d-variable named "int1" of type int:
            int data = ds.GetData&lt;int&gt;("int1", 2);
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.Int32,Microsoft.Research.Science.Data.Range[])">
            <summary>
            Get a range of values from a variable.
            </summary>
            <typeparam name="D">D must a scalar or an array of a proper rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to get data from.</param>
            <param name="range">Range of the data to get.</param>
            <returns>Requested data.</returns>
            <remarks>
            <para>
            Number of <paramref name="range"/> elements must be equal to the rank of a variable.
            </para>
            <para>
            Type <typeparamref name="D"/> is a type of the result data. Its rank depends on rank
            of the variable and how many "reduce" ranges are presented in the <paramref name="range"/>
            (see also <see cref="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)"/>).
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Range"/> can be created using static methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.
            Read remarks for the <see cref="T:Microsoft.Research.Science.Data.Range"/> struct.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},Microsoft.Research.Science.Data.Range[])">
            <summary>
            Get a range of values from a variable.
            </summary>
            <typeparam name="D">D must a scalar or an array of a proper rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to get data from.</param>
            <param name="range">Range of the data to get.</param>
            <returns>Requested data.</returns>
            <remarks>
            <para>
            Number of <paramref name="range"/> elements must be equal to the rank of a variable.
            </para>
            <para>
            Type <typeparamref name="D"/> is a type of the result data. Its rank depends on rank
            of the variable and how many "reduce" ranges are presented in the <paramref name="range"/>
            (see also <see cref="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)"/>).
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Range"/> can be created using static methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.
            Read remarks for the <see cref="T:Microsoft.Research.Science.Data.Range"/> struct.
            </para>    
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetData``1(Microsoft.Research.Science.Data.DataSet,System.String,Microsoft.Research.Science.Data.Range[])">
            <summary>
            Get a range of values from a variable.
            </summary>
            <typeparam name="D">D must a scalar or an array of a proper rank.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to get data from.</param>
            <param name="range">Range of the data to get.</param>
            <returns>Requested data.</returns>
            <remarks>
            <para>
            Number of <paramref name="range"/> elements must be equal to the rank of a variable.
            </para>
            <para>
            Type <typeparamref name="D"/> is a type of the result data. Its rank depends on rank
            of the variable and how many "reduce" ranges are presented in the <paramref name="range"/>
            (see also <see cref="M:Microsoft.Research.Science.Data.DataSet.ReduceDim(System.Int32)"/>).
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Range"/> can be created using static methods of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.
            Read remarks for the <see cref="T:Microsoft.Research.Science.Data.Range"/> struct.
            </para>
            <para>The method finds a variable with name <paramref name="variableName"/>, given rank and
            type of data (determined from the arguments) and gets the data from it.
            If a variable is not found, an exception is thrown.</para>	
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetAttr(Microsoft.Research.Science.Data.DataSet,System.Int32,System.String)">
            <summary>
            Gets a metadata attribute value.
            </summary>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to get metadata attribute from.</param>
            <param name="attributeName">The name of the metadata attribute to get.</param>
            <returns>The attribute value.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetAttr(Microsoft.Research.Science.Data.DataSet,System.String,System.String)">
            <summary>
            Gets a metadata attribute value.
            </summary>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to get metadata attribute from.</param>
            <param name="attributeName">The name of the metadata attribute to get.</param>
            <returns>The attribute value.</returns>
            <remarks>
            <para>The method finds a variable with name <paramref name="variableName"/>
            and gets the attribute from it.
            If a variable is not found or there are several variables with the name, 
            an exception is thrown.</para>	
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Gets attribute "range" from variable "var":
            object range = ds.GetAttr("var", "range"); 
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetAttr(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},System.String)">
            <summary>
            Gets a metadata attribute value.
            </summary>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to get attribute from.</param>
            <param name="attributeName">The name of the metadata attribute to get.</param>
            <returns>The attribute value.</returns>
            <remarks>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetAttr``1(Microsoft.Research.Science.Data.DataSet,System.Int32,System.String)">
            <summary>
            Gets a metadata attribute value.
            </summary>
            <typeparam name="T">Type of the attribute value.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to get metadata attribute from.</param>
            <param name="attributeName">The name of the metadata attribute to get.</param>
            <returns>The attribute value.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetAttr``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String)">
            <summary>
            Gets a metadata attribute value.
            </summary>
            <typeparam name="T">Type of the attribute value.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to get metadata attribute from.</param>
            <param name="attributeName">The name of the metadata attribute to get.</param>
            <returns>The attribute value.</returns>
            <remarks>
            <para>The method finds a variable with name <paramref name="variableName"/>
            and gets the attribute from it.
            If a variable is not found or there are several variables with the name, 
            an exception is thrown.</para>	
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Gets attribute "range" from variable "str":
            int[] range = ds.GetAttr&lt;int[]&gt;("str", "range"); 
            int min = range[0];
            int max = range[1];
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetAttr``1(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},System.String)">
            <summary>
            Gets a metadata attribute value.
            </summary>
            <typeparam name="T">Type of the attribute value.</typeparam>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to get attribute from.</param>
            <param name="attributeName">The name of the metadata attribute to get.</param>
            <returns>The attribute value.</returns>
            <remarks>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutAttr(Microsoft.Research.Science.Data.DataSet,System.Int32,System.String,System.Object)">
            <summary>
            Sets a metadata attribute value.
            </summary>
            <param name="dataset">Target data set.</param>
            <param name="variableId"><see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of the variable to set metadata attribute.</param>
            <param name="attributeName">The name of the metadata attribute to set.</param>
            <param name="value">Value of the attribute.</param>
            <remarks>
            <para>
            If the new <paramref name="value"/> for the key is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutAttr(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object)">
            <summary>
            Sets a metadata attribute value.
            </summary>
            <param name="dataset">Target data set.</param>
            <param name="variableName"><see cref="P:Microsoft.Research.Science.Data.Variable.Name"/> of the variable to set metadata attribute.</param>
            <param name="attributeName">The name of the metadata attribute to set.</param>
            <param name="value">Value of the attribute.</param>
            <remarks>
            <para>The method finds a variable with name <paramref name="variableName"/>
            and sets its attribute.
            If a variable is not found or there are several variables with the name, 
            an exception is thrown.</para>	
            <para>
            If the new <paramref name="value"/> for the key is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            <example>
            <code>
            // Opens a data set:
            var ds = DataSet.Open("test.csv?openMode=open");		
            // Sets attribute "range" of variable "var":
            ds.SetAttr("var", "range", new int[] { 0, 100 }); 
            </code>
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.PutAttr(Microsoft.Research.Science.Data.DataSet,System.Func{Microsoft.Research.Science.Data.Variable,System.Boolean},System.String,System.Object)">
            <summary>
            Sets a metadata attribute value.
            </summary>
            <param name="dataset">Target data set.</param>
            <param name="predicate">Determines the variable to set attribute.</param>
            <param name="attributeName">The name of the metadata attribute to set.</param>
            <param name="value">Value of the attribute.</param>
            <remarks>
            <para><paramref name="predicate"/> must select only one variable within the DataSet.
            Otherwise, an exception is thrown.</para>
            <para>
            If the new <paramref name="value"/> for the key is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddAxis(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Double,System.Double,System.Double)">
             <summary>
             Creates new uniform axis variable of type double and adds it to the dataset.
             </summary>
             <param name="ds">Target datas set.</param>
             <param name="name">Name of the axis.</param>
             <param name="units">Units of measurement of values of the axis.</param>
             <param name="min">Starting axis value.</param>
             <param name="max">Final axis value.</param>
             <param name="delta">Step of values for the axis.</param>
             <returns>New variable.</returns>
             <remarks>
             <para>Adds new axis to the dataset, which is a 1d-variable depending on a dimension with name equal to the variable name, 
             and sets its "Units" attribute to given units string. 
             Values for the axis are uniform and are defined by a user using min,max and step values, so 
             that value[i] = min + step * i.</para>
             <para>If the dataset already contains a variable with given name, the method just returns that variable, 
             if it has proper type, rank and units. Values are not checked.
             </para>
             <example>
             <code>
              DataSet ds = DataSet.Open("output.csv?openMode=create");
              
              ds.AddAxis("x", "m", 0, 10, 10);
              ds.AddAxis("y", "m", 0.0, 10.0, 5.0);
            
              double[,] data = new[,] { { 1.0, 2.0, 3.0 }, { 11.0, 12.0, 13.0 } };
              ds.Add("z", "unitz", 999.0, data); 
             </code>
             </example>
             <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
             Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
             Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.
             Methods <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.Object[])"/> allow to get value from a variable defined in a coordinate system
             from its coordinates instead of indices.</para>
             <para>
             DataSet has a default coordinate system which consists from all presented axes.
             If no dimensions or axes are given when adding new variable (<see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0)"/>),
             default coordinate system is chosen, if appropriate.
             </para>
             </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddAxis``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,``0)">
             <summary>
             Creates new axis variable and adds it to the dataset.
             </summary>
             <param name="ds">Target datas set.</param>
             <param name="name">Name of the axis.</param>
             <param name="units">Units of measurement of values of the axis.</param>
             <param name="data">Values of the axis.</param>
             <typeparam name="T">Full type of the axis.</typeparam>
             <returns>New variable.</returns>
             <remarks>
             <para>Adds new axis to the dataset, which is a 1d-variable depending on a dimension with name equal to the variable name, 
             and sets its "Units" attribute to given units string.</para>
             <para>If the dataset already contains a variable with given name, the method just returns that variable, 
             if it has proper type, rank and units. Values are not checked.
             </para>
             <para>
             If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
             to change the original array without affecting the data of the variable or proposed changes to commit.
             </para>
             <example>
             <code>
              DataSet ds = DataSet.Open("output.csv?openMode=create");
              
              ds.AddAxis("x", "m", 0, 10, 10);
              ds.AddAxis("y", "m", new double[] {0, 0.5, 2.5, 10});
            
              double[,] data = new[,] { { 1.0, 2.0, 3.0, 4.0 }, { 11.0, 12.0, 13.0, 14.0 } };
              ds.Add("z", "unitz", 999.0, data); 
             </code>
             </example>
             <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
             Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
             Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.
             Methods <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.Object[])"/> allow to get value from a variable defined in a coordinate system
             from its coordinates instead of indices.</para>
             <para>
             DataSet has a default coordinate system which consists from all presented axes.
             If no dimensions or axes are given when adding new variable (<see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0)"/>),
             default coordinate system is chosen, if appropriate.
             </para>
             </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddAxis(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Single,System.Single,System.Single)">
             <summary>
             Creates new uniform axis variable of type float and adds it to the dataset.
             </summary>
             <param name="ds">Target datas set.</param>
             <param name="name">Name of the axis.</param>
             <param name="units">Units of measurement of values of the axis.</param>
             <param name="min">Starting axis value.</param>
             <param name="max">Final axis value.</param>
             <param name="delta">Step of values for the axis.</param>
             <returns>New variable.</returns>
             <remarks>
             <para>Adds new axis to the dataset, which is a 1d-variable depending on a dimension with name equal to the variable name, 
             and sets its "Units" attribute to given units string. 
             Values for the axis are uniform and are defined by a user using min,max and step values, so 
             that value[i] = min + step * i.</para>
             <para>If the dataset already contains a variable with given name, the method just returns that variable, 
             if it has proper type, rank and units. Values are not checked.
             </para>
             <example>
             <code>
              DataSet ds = DataSet.Open("output.csv?openMode=create");
              
              ds.AddAxis("x", "m", 0, 10, 10);
              ds.AddAxis("y", "m", 0.0f, 10.0f, 5.0f);
            
              double[,] data = new[,] { { 1.0, 2.0, 3.0 }, { 11.0, 12.0, 13.0 } };
              ds.Add("z", "unitz", 999.0, data); 
             </code>
             </example>
             <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
             Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
             Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.
             Methods <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.Object[])"/> allow to get value from a variable defined in a coordinate system
             from its coordinates instead of indices.</para>
             <para>
             DataSet has a default coordinate system which consists from all presented axes.
             If no dimensions or axes are given when adding new variable (<see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0)"/>),
             default coordinate system is chosen, if appropriate.
             </para>
             </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddAxis(Microsoft.Research.Science.Data.DataSet,System.String,System.DateTime,System.DateTime,System.TimeSpan)">
             <summary>
             Creates new uniform axis variable of type <see cref="T:System.DateTime"/> and adds it to the dataset.
             </summary>
             <param name="ds">Target datas set.</param>
             <param name="name">Name of the axis.</param>
             <param name="min">Starting axis value.</param>
             <param name="max">Final axis value.</param>
             <param name="delta">Step of values for the axis.</param>
             <returns>New variable.</returns>
             <remarks>
             <para>Adds new axis to the dataset, which is a 1d-variable depending on a dimension with name equal to the variable name. 
             Values for the axis are uniform and are defined by a user using min,max and step values, so 
             that value[i] = min + step * i.</para>
             <para>If the dataset already contains a variable with given name, the method just returns that variable, 
             if it has proper type, rank and units. Values are not checked.
             </para>
             <example>
             <code>
              DataSet ds = DataSet.Open("output.csv?openMode=create");
              
              ds.AddAxis("x", "m", 0, 10, 10);
              ds.AddAxis("y", "m", new DateTime(2010,1,1), new DateTime(2010,2,1), TimeSpane.FromHours(1));
            
              double[,] data = new[,] { { 1.0, 2.0, 3.0 }, { 11.0, 12.0, 13.0 } };
              ds.Add("z", "unitz", 999.0, data); 
             </code>
             </example>
             <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
             Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
             Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.
             Methods <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.Object[])"/> allow to get value from a variable defined in a coordinate system
             from its coordinates instead of indices.</para>
             <para>
             DataSet has a default coordinate system which consists from all presented axes.
             If no dimensions or axes are given when adding new variable (<see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0)"/>),
             default coordinate system is chosen, if appropriate.
             </para>
             </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,``0,System.String[])">
            <summary>
            Creates new variable with given initial data and adds it to the data set.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="name">Name of the new variable.</param>
            <param name="units">Units attribute.</param>
            <param name="data">Initial data of the variable.</param>
            <param name="dimensions">Names of new variable's dimensions.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If <paramref name="dimensions"/> are absent, the 
            <typeparamref name="T"/> type parameter must be an array type of proper rank. 
            E.g. <c>ds.Add&lt;double[,]&gt;("mat", new double[,]{{1},{2}})</c> creates a variable named "mat" 
            of type double and of rank 2 in a default coordinate system. 
            If there is no default coordinate system, an exception is thrown.
            </para>
            <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
            Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
            Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.
            Methods <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.Object[])"/> allow to get value from a variable defined in a coordinate system
            from its coordinates instead of indices.</para>
            <para>
            DataSet has a default coordinate system which consists from all presented axes.
            If no dimensions or axes are given when adding new variable (<see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0)"/>),
            default coordinate system is chosen, if appropriate.
            </para>
            <para>
            It is still possible to specify type parameter and dimensions of the variable:
            <c>ds.Add&lt;double[,]&gt;("mat", new double[,]{{1},{2}}, "x", "y")</c> also creates a variable named "mat" 
            of type double and of rank 2. 
            The syntax <c>ds.Add&lt;double&gt;("mat", new double[,]{{1},{2}}, "x", "y")</c> 
            is incorrect, but <c>ds.Add&lt;double&gt;("mat", 10.0)</c> creates a scalar variable with value 10.
            </para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0,System.String[])">
            <summary>
            Creates new variable with initial data and adds it to the data set.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="name">Name of the new variable.</param>
            <param name="units">Units attribute.</param>
            <param name="missingValue">Missing value that is used within the data.</param>
            <param name="data">Initial data of the variable.</param>
            <param name="dimensions">Names of new variable's dimensions.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If <paramref name="dimensions"/> are absent, the 
            <typeparamref name="T"/> type parameter must be an array type of proper rank. 
            E.g. <c>ds.Add&lt;double[,]&gt;("mat", new double[,]{{1},{2}})</c> creates a variable named "mat" 
            of type double and of rank 2.
            </para>
            <para>
            It is still possible to specify type parameter and dimensions of the variable:
            <c>ds.Add&lt;double[,]&gt;("mat", new double[,]{{1},{2}}, "x", "y")</c> also creates a variable named "mat" 
            of type double and of rank 2. 
            The syntax <c>ds.Add&lt;double&gt;("mat", new double[,]{{1},{2}}, "x", "y")</c> 
            is incorrect, but <c>ds.Add&lt;double&gt;("mat", 10.0)</c> creates a scalar variable with value 10.
            </para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0,System.Int32[])">
            <summary>
            Creates new variable with initial data and adds it to the data set.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="name">Name of the new variable.</param>
            <param name="units">Units attribute.</param>
            <param name="missingValue">Missing value of the variable.</param>
            <param name="data">Initial data of the variable.</param>
            <param name="axesIDs">Axes of the variable defining the coordinate system.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
            Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
            Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.</para>
            <para>The method adds new variable with given units and missing value. 
            The variable will be defined in a coordinate system containing all given axes.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddAxis(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Double,System.Double,System.Double)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object,``0)">
            <summary>
            Creates new variable with initial data in a default coordinate system and adds it to the data set.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="name">Name of the new variable.</param>
            <param name="units">Units attribute.</param>
            <param name="data">Initial data of the variable.</param>
            <param name="missingValue">Missing value that is used within the data.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
            Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
            Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.</para>
            <para>The method adds new variable with given units and missing value. 
            The variable will be defined in a default coordinate system, which is 
            a coordinate system consisting of all axes that already present in the DataSet (i.e. of 1d-variables whose name equal to their dimension's name).
            The order of axes in the coordinate system is found automatically, if possible, depending on a shape of the given 
            <paramref name="data"/> and lengths of the axes. Otherwise, if it is impossible to unamigiously identify the correspondence
            (including case when an array has at least two equal lengths along different dimensions), an exception will be thrown.
            </para>
            <example>
            <code>
            using (DataSet ds = DataSet.Open("data.nc?openMode=create"))
            {
                ds.AddAxis("x", "1", new double[] { 1, 2 });
                ds.AddAxis("y", "1", new double[] { 1, 2, 3 }); // default coordinate system is "x,y"
                ds.Add("v", "kg", -1.0, new double[,] { { 1, 2, 3 }, { 1, 2, 3 } }); // "v" has shape 3x2 and hence is defined in "x,y"
            
                Console.WriteLine(ds);
                // Prints:
                // [3] v of type Double (x:2) (y:3)
                // [2] y of type Double (y:3)
                // [1] x of type Double (x:2)
            }
            </code>
            Compare with the following example, where variable "v" has shape 2x3 and hence depends on "y","x" instead of "x","y":
            <code>
            using (DataSet ds = DataSet.Open("data.nc?openMode=create"))
            {
                ds.AddAxis("x", "1", new double[] { 1, 2, 3 });
                ds.AddAxis("y", "1", new double[] { 1, 2 }); // default coordinate system is "x,y"
                ds.Add("v", "kg", -1.0, new double[,] { { 1, 2, 3 }, { 1, 2, 3 } }); // "v" has shape 2x3 and hence is defined in "y,x"
            
                Console.WriteLine(ds);
                // Prints:
                // [3] v of type Double (y:2) (x:3)
                // [2] y of type Double (y:2)
                // [1] x of type Double (x:3)
            }
            </code>
            </example>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddAxis(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Double,System.Double,System.Double)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.Add``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,``0,System.Int32[])">
            <summary>
            Creates new variable with initial data and adds it to the data set.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="name">Name of the new variable.</param>
            <param name="units">Units attribute.</param>
            <param name="data">Initial data of the variable.</param>
            <param name="axesIDs">Axes of the variable defining the coordinate system.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
            Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order.
            Example: "lat,lon,time", if variables lat,lon,time are axes of a dataset.</para>
            <para>The method adds new variable with given units and missing value. 
            The variable will be defined in a coordinate system containing all given axes.</para>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddAxis(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Double,System.Double,System.Double)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddSimilar``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.String,System.Object,``0)">
            <summary>
            Adds new variable using another one as a template for dimensions.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="srcName">Name of the variable that is to be used as a template.</param>
            <param name="varName">Name of the new variable.</param>
            <param name="missingValue">Missing value of the variable.</param>
            <param name="units">Units attribute.</param>
            <param name="data">Initial data of the variable.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddSimilar``1(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.Variable,System.String,System.String,System.Object,``0)">
            <summary>
            Adds new variable using another one as a template for dimensions.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="srcVar">Name of the variable that is to be used as a template.</param>
            <param name="varName">Name of the new variable.</param>
            <param name="missingValue">Missing value of the variable.</param>
            <param name="units">Units attribute.</param>
            <param name="data">Initial data of the variable.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddSimilar``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.String,``0)">
            <summary>
            Adds new variable using another one as a template for dimensions.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="srcName">Name of the variable that is to be used as a template.</param>
            <param name="varName">Name of the new variable.</param>
            <param name="units">Units attribute.</param>
            <param name="data">Initial data of the variable.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.AddSimilar``1(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.Variable,System.String,System.String,``0)">
            <summary>
            Adds new variable using another one as a template for dimensions.
            </summary>
            <typeparam name="T">An array of variable rank and data type, or a type for scalar variable.</typeparam>
            <param name="ds">Target data set.</param>
            <param name="srcVar">Name of the variable that is to be used as a template.</param>
            <param name="varName">Name of the new variable.</param>
            <param name="units">Units attribute.</param>
            <param name="data">Initial data of the variable.</param>
            <returns>New variable.</returns>
            <remarks>
            <para>
            If the <paramref name="data"/> parameter is an array, it is copied by the method for further use; therefore after this method call, it is allowed
            to change the original array without affecting the data of the variable or proposed changes to commit.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="varName">Variable to get value from.</param>
            <param name="cs">Coordinate system definition (e.g. "lat,lon,time").</param>
            <param name="coords">Coordinate values in the order defined by <paramref name="cs"/>.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>Axis is a 1d-variable with name equal to its dimension name. Example: variable "lat" depending on dimension "lat" is an axis.
            Coordinate system is a set of axes of a dataset. Can be defined as a list of the variables names in any order. 
            It is defined by a string like "lat,lon,time", if variables lat,lon,time are axes of a dataset.
            </para>
            <para>The method gets nearest exact value for the given coordinates.</para>
            <para>If <typeparamref name="T"/> doesn't match data type of the variable, an exception is thrown.</para>
            <example>
             DataSet ds = DataSet.Open("msds:memory");
             ds.AddAxis("x", "unitx", 0.0, 3.0, 1.0);
             ds.AddAxis("y", "unity", new float[] { 0f, 0.5f, 1f, 2f, 5f });
             
             var data = new[,] { { 0, 1, 2, 3, }, { 4, 5, 6, 7 }, { 8, 9, 10, 11 }, { 12, 13, 14, 15 }, { 16, 17, 18, 19 } };
             ds.Add("z", "unitz", 999, data);
             
             // Explicitly specifying a coordinate system
             int res = ds.GetValue&lt;int&gt;("z", "x,y", 1.6, 1.6f)); // 14
             res = 14, ds.GetValue&lt;int&gt;("z", "y,x", 1.6f, 1.6)); // 14
             res = 12, ds.GetValue&lt;int&gt;(ds["z"].ID, "x,y", 0.0001, 2.6f)); // 12
             
             // From the coordinate system of z (it is "y,x" since z is 5 x 3)
             res = 14, ds.GetValue&lt;int&gt;("z", 1.6f, 1.6)); // 14
             res = 14, ds.GetValue&lt;int&gt;(ds["z"].ID, 1.6f, 1.6)); // 14
            </example>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.Int32,System.String,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="varID">Variable to get value from.</param>
            <param name="cs">Coordinate system definition (e.g. "lat,lon,time").</param>
            <param name="coords">Coordinate values in the order defined by <paramref name="cs"/>.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>See remarks for <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])"/></para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.ReverseIndexSelection,System.String,System.String,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="mode">Determines how to find out the value.</param>
            <param name="varName">Variable to get value from.</param>
            <param name="cs">Coordinate system definition (e.g. "lat,lon,time").</param>
            <param name="coords">Coordinate values in the order defined by <paramref name="cs"/>.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>See remarks for <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])"/></para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.ReverseIndexSelection,System.Int32,System.String,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="mode">Determines how to find out the value.</param>
            <param name="varID">Variable to get value from.</param>
            <param name="cs">Coordinate system definition (e.g. "lat,lon,time").</param>
            <param name="coords">Coordinate values in the order defined by <paramref name="cs"/>.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>See remarks for <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])"/></para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates in a coordinate system of the variable.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="varName">Variable to get value from.</param>
            <param name="coords">Coordinate values in the order defined by the dimensions of the variable.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>See remarks for <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])"/></para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.Int32,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates in a coordinate system of the variable.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="varID">Variable to get value from.</param>
            <param name="coords">Coordinate values in the order defined by the dimensions of the variable.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>See remarks for <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])"/></para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.ReverseIndexSelection,System.String,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates in a coordinate system of the variable.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="mode">Determines how to find out the value.</param>
            <param name="varName">Variable to get value from.</param>
            <param name="coords">Coordinate values in the order defined by the dimensions of the variable.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>See remarks for <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])"/></para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,Microsoft.Research.Science.Data.ReverseIndexSelection,System.Int32,System.Object[])">
            <summary>
            Returns a value from the variable for the given coordinates in a coordinate system of the variable.
            </summary>
            <typeparam name="T">Type of result value (mast match data type of the variable).</typeparam>
            <param name="ds">Owner of the variable.</param>
            <param name="mode">Determines how to find out the value.</param>
            <param name="varID">Variable to get value from.</param>
            <param name="coords">Coordinate values in the order defined by the dimensions of the variable.</param>
            <returns>A value from the variable corresponding to the coordinates.</returns>
            <remarks>
            <para>See remarks for <see cref="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue``1(Microsoft.Research.Science.Data.DataSet,System.String,System.String,System.Object[])"/></para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValue1d``1(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.Variable{``0},Microsoft.Research.Science.Data.Variable,System.Object)">
            <summary>
            Returns value in the given axis for specified coordinate value.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetIndex1d``1(Microsoft.Research.Science.Data.ReverseIndexSelection,Microsoft.Research.Science.Data.Variable{``0},Microsoft.Research.Science.Data.Variable,System.Object)">
            <summary>
            Returns index (or two nearest indices) in the given axis for specified coordinate value.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Imperative.DataSetExtensions.GetValueIndex">
            <summary>
            Stores a pair of indices and interpolation coefficient.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.ICsvVariable.Initialize(System.Array,System.Int32[])">
            <summary>
            Initializes a variable by the given array.
            For columned arrays the data is 1d and will be converted to 2d.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.ICsvVariable.ReadOnlyInnerData">
            <summary>
            Returns inner data as a 1d-array (note: for columned 2d-vars it is 1d too!)
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.ICsvVariableMd.GetColumnData(System.Int32)">
            <summary>
            Gets the data for the given column as a 1d array.
            </summary>
            <param name="col"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.ICsvVariableMd.Initialize(System.Array)">
            <summary>
            Initializes from flat 2d array
            </summary>
            <param name="data"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.ICsvVariableMd.FastCopyColumn(System.Array,System.Array,System.Int32)">
            <summary>
            Copies column data to the array (variable is typed so it is much faster to use this method for intialization)
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.CsvVariable`1">
            <summary>This abstract class is a base for all classes that work with variables in CSV files</summary>
            <typeparam name="DataType">Type of variable. List of supported types can be found in 
            DataSet specification</typeparam>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvVariable`1.data">
            <summary>Array holding in-memory copy of data for this variable. 
            It is <see cref="T:Microsoft.Research.Science.Data.ArrayWrapper"/> so it holds information
            about rank and size even if there is no data values.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.#ctor(Microsoft.Research.Science.Data.CSV.CsvDataSet,System.Int32,Microsoft.Research.Science.Data.MetadataDictionary,System.String[])">
            <summary>Initialized a new instance of CSV variable</summary>
            <param name="dataSet">Owner CSV DataSet</param>
            <param name="id">ID of variable</param>
            <param name="metadata">Metadata dictionary to be copied into this variable</param>
            <param name="dims">Array of dimension names</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.Microsoft#Research#Science#Data#CSV#ICsvVariable#Initialize(System.Array,System.Int32[])">
            <summary>
            Initializes data internally, only when data is loaded from a csv-file.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.CloneAndRenameDims(System.String[])">
            <summary>Creates a clone of this variable with renamed dimensions</summary>
            <param name="newDims">Array of new dimension names. Length of this array must
            match rank of variable</param>
            <returns>Clone of variable</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.GetInnerData">
            <summary>
            Builds and returns inner data to be presented as a single column.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.InnerInitialize(System.Array,System.Int32[])">
            <summary>
            Initializes data internally, only when data is loaded from a csv-file.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.ReadData(System.Int32[],System.Int32[])">
            <summary>Reads array of values from variable</summary>
            <param name="origin">Origin of region to read. Null origin means all zeros</param>
            <param name="shape">Shape of region to read. Null shape means entire array of data.</param>
            <returns>Array of values loaded from variable</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.WriteData(System.Int32[],System.Array)">
            <summary>
            Writes the data to the variable's underlying storage starting with the specified origin indices.
            Each operation is a part of a transaction, opened with the BeginWriteTransaction() method.
            *It is called in the precommit stage*
            </summary>
            <remarks>
            <para>A sequence of such outputs with same transaction can be either committed by CommitWrite() or
            rolled back by RollbackWrite().</para>
            <para>Parameter <paramref name="origin"/> for data piece produced by Append operation
            in given to the method already transformed and contains actual values.</para>
            </remarks>
            <param name="origin">Indices to start adding of data. Null means all zeros.</param>
            <param name="a">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable`1.ReadShape">
            <summary>Gets shape of variable</summary>
            <returns>Array of integers with variable shape</returns>
            <remarks>Returned array is a copy of shape so it modification won't
            affect variable</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvVariable`1.ColumnIndex">
            <summary>
            Gets the starting column index within the file for this variable.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvVariable`1.DisplayName">
            <summary>Gets or sets the display name.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.CsvColumn">
            <summary>
            Describes a single column in a CSV file.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.CsvDataSet">
            <summary>
            A <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider that stores data in a delimited text file as a flat table.
            </summary>
            <remarks>
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> provider stores data in a delimited text file as 
            a flat table; in particular the CSV file format is supported. CSV stands for Comma Separated Values.
            Classic CSV file is a text file that represents data as a table, where each line corresponds to a row in the table.
            Columns within a line are separated by commas.
            CSV files are convenient for they are human readable and supported by many applications, including Microsoft Excel.
            </para>
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> provider extends the described file format. First, it supports
            different delimeters (comma, semicolon, tab and space; see URI parameter <c>"separator"</c>). 
            Second, it may append an output file
            by another tables (separated by empty lines from the main data table; see URI parameter <c>"appendMetadata"</c>). 
            These extra tables contain
            information about data stucture and metadata (see also <see cref="T:Microsoft.Research.Science.Data.MetadataDictionary"/>). 
            </para>
            <para>
            First line of a file contains display names of variables.
            Use the <c>"noHeader"</c> or <c>"saveHeader"</c> parameters of a URI to change it.
            If the file doesn't contain metadata table and thus do not define variable's
            names explicitly, display names also are used as names of the variables.
            </para>
            <para>
            The provider supports variables of any non-negative rank. 
            Two-dimensional variables are stored as several 
            consequent columns within a file
            (first index is a row, second index is a column).
            Only first column of these columns has header; other headers corresponding to the variable are empty.
            This rule is a criteria of a  multidimensional variable within an input file. But if the first column in a file
            is empty, the corresponding variable is always considered as one-dimensional.
            </para>	
            <para>
            Three and more dimensional variables are also stored as several consequent columns.
            The rule is: last index corresponds to columns, the preceding index corresponds
            to rows, and other indices are placed consequently in rows below (last indices vary faster).
            </para>
            <para>
            The provider is associated with the provider name "csv" and extensions ".csv" and ".tsv"
            (read about the DataSet factory: <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>).
            </para>
            <para>
            About an input and output files encodings please refer a description of a URI parameter <c>"utf8bom"</c>
            in the table below.
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> accepts following parameters in a URI
            (read about DataSet URIs here: <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>;
            about preliminary URI customization <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>):
            <list type="table">
            <listheader>
              <term>Parameter</term>
              <description>Description</description>
            </listheader>
             <item>
            	<term>file</term>
            	<description>Specifies the file to open or create. This can be either
            	a local file path or a HTTP URL.
            	Examples: <c>"msds:csv?file=c:\data\data.csv"</c>, 
            	<c>"msds:csv?file=http://arca7.wdcb.ru/DataExplorer/data.csv"</c>.
            	If the HTTP URL is specified, the file must exist and the constructed data set is always read only.
            	If there is a need to modify it, consider cloning it into a <see cref="T:MemoryDataSet"/>.
            	See <see cref="M:Microsoft.Research.Science.Data.DataSet.Clone(System.String)"/>.</description>
            </item>
             <item>
            	<term>openMode=createNew|create|open|openOrCreate|readOnly</term>
            	<description>
            	The flag "openMode" specifies how the data set should open a file, 
            data base or whatever resource it uses to store the data.
            Possible values for the flag are:
            <list type="table">
            	<listheader>
            	<term>Mode</term>
            	<description>Description</description>
            	</listheader>
            	<item>
            	<term>createNew</term>
            	<description>Specifies that the data set should create new resource. If the resource already exists, an exception IOException is thrown.</description>
            	</item>
            	<item>
            	<term>open</term>
            	<description>Specifies that the data set should open an existing resource. If the resource does not exist, an exception ResourceNotFoundException is thrown.</description>
            	</item>
            	<item>
            	<term>readOnly</term>
            	<description>Specifies that the data set should open an existing resource for reading only. If the resource does not exist, an exception ResourceNotFoundException is thrown.</description>
            	</item>
            	<item>
            	<term>create</term>
            	<description>Specifies that the data set should create a new resource. If the resource already exists, it will be re-created.</description>
            	</item>
            	<item>
            	<term>openOrCreate</term>
            	<description>Specifies that the data set should open a resource if it exists; otherwise, a new resource should be created.</description>
            	</item>
            </list>
                <para>If the target is read only or is a HTTP URL, the constructed DataSet is always read only.
                Consider cloning it into a <see cref="T:MemoryDataSet"/> to modify.
                See <see cref="M:Microsoft.Research.Science.Data.DataSet.Clone(System.String)"/>.</para>
            	</description>
            </item>
            <item>
            	<term>appendMetadata=true|false</term>
            	<description>If the value is true, the provider appends an output file with special 
            	metadata tables, describing structure of the DataSet. These tables
            	can be a reason of incompatibility for some CSV-oriented programs. 
            	In this case set the parameter value to false.
            	If the parameter is not specifed, metadata will be appended only if the input file have 
            	had metadata appended.
            	</description>
            </item>
            <item>
            	<term>noHeader=true|false</term>
            	<description>If the parameter is false, the first line of an input file
            	is a header containing display names of variables.
            	Otherwise, first line contains data. 
            	Note that this parameter doesn't affect an output file. See also
            	parameter "saveHeader".
            	Default is false (i.e. an input file must have a header line).
            	</description>
            </item>
            <item>
            <term>
            saveHeader=true|false
            </term>
            <description>
            Parameter defines whether the provider must save a header line into an output file or not.
            If it is not specified, its value depends on the "noHeader" parameter:
            if the input file has no header, the header is not saved in the output file, too; and vice versa.
            </description>
            </item>
            <item>
            	<term>fillUpMissingValues=true|false</term>
            	<description>Indicates whether the CSV provider should interpreter empty values
            	(i.e. empty strings between separators)
            	in an input file as missing values or not. Default is false.</description>
            </item>
             <item>
            	<term>inferInt=true|false</term>
            	<description>If the value is true, the CSV provider infers following types on loading:
            	int, double, DateTime, string. Otherwise, only double, DateTime and string are inferred.
            	Default is false.</description>
            </item>
             <item>
            	<term>culture</term>
            	<description>The culture name that is used to parse an input file. Default is an invariant culture.
            	Note that this parameter does not affect an output file for it is written for an invariant culture
            	always.
            	Example: <c>"msds:csv?file=data-gb.csv&amp;culture=en-GB"</c>.</description>
            </item>
             <item>
            	<term>inferDims=true|false</term>
            	<description><para>If the value is true, when parsing a file, 
            	all variables (that have no metadata defined for them)
            	with same length are considered as 
            	sharing same dimensions. Default is false.</para>
            	<para>
            	In the following example, if the inferDims is true,
            	variables <c>a</c> and <c>c</c> depend on same dimension;
            	<c>b</c> and <c>d</c> also depend on same dimension, different than the former one.
            	If the inferDims is false, all variables depend on different dimensions.
            	<code>
            	a	b	c	d
            	1	10	100	string1
            	2	20	200	string2
            	3	  	300	
            	</code>
            	</para>
            	</description>
            </item>
             <item>
            	<term>utf8bom=true|false</term>
            	<description>If utf8bom parameter is defined and is equal to
            <list type="bullet">
            <item>true, output encoding is UTF8 with signature;</item>
            <item>false, output encoding is UTF8 without signature.</item>
            </list>
            If the parameter utf8bom is not defined, and if a file exists, its encoding is kept for an output,
            otherwise, if the underlying file is created, UTF8 with signature is used.</description>
            </item>
             <item>
            	<term>separator=comma|semicolon|space|tab</term>
            	<description>Determines a char that separates values in the file.
            	Default is "comma".</description>
            </item>
             <item>
            	<term>include</term>
            	<description>The parameter allows including variables as references from another DataSet, 
            	that is defined as a URI,
            	into this DataSet. Note, that only variable names conforming
            	C# or Python 3 naming rules, can be specified in the include parameter.
            	Example: <c>msds:memory?include=msds%3Acsv%3Ffile%example.csv%23lat%2Clon</c> 
            	(escaped version of <c>"msds:memory?include=escape[msds:csv?file=example.csv#lat,lon]"</c>)
            	includes variables <c>lat</c> and <c>lon</c> from <c>msds:csv?file=example.csv</c>. If variables names are not specified,
            	all variables are included.</description>
            </item>
            </list>
            </para>	
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> provider supports URIs containing a path
            and appended through '?' parameters: <c>c:\data\air0.csv?openMode=open&amp;fillUpMissingValues=true&amp;inferInt=true</c>.
            </para>
            <example>
            The following example creates a <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> from existing file <c>example.csv</c>
            and requests that all variables with same number of elements would depend on same dimension.
            <code>
            using (DataSet ds = DataSet.Create("msds:csv?file=example.csv&amp;openMode=open&amp;inferDims=true"))
            {
            	// Working with ds . . .
            }
            </code>
            </example>
            <para><c>CsvDataSet</c> provides a special metadata attribute with a key "csv_column". 
            This value is an integer zero-based
            number of a column within a file that corresponds a variable. 
            For multidimensional variables those are spead on several columns, this value is an index of its 
            first column. A "csv_column" attribute is generated automatically when dataset is loaded. 
            If a file already contains a
            "csv_column" attribute for some variables, these attributes are ignored and a warning is traced.</para>
            <para>A "csv_column" attribute is writable, but now its modification doesn't affects output file. It will be
            taken into account in future releases.</para>
            <para>
            The <c>CsvDataSet</c> saves <see cref="T:System.DateTime"/> variables 
            using the following format string: <c>"yyyy-MM-dd hh:mm:ss"</c> (e.g. <c>"1999-04-20 14:10:00"</c>), 
            acceptable by Microsoft Excel. But this DateTime format provides a precision to within a second.
            If greater precision is required, it is possible to store <see cref="P:System.DateTime.Ticks"/> using
            a variable of type <see cref="T:System.Int64"/>. 
            </para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.CsvColumnKeyName">
            <summary>Key name for special metadata key that indicates zero-based column index in CSV file</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.TraceCsvDataSet">
            <summary>
            Filters trace messages related to the DataSet.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.utf8BOM">
            <summary>If true, puts the UTF8 Byte order mark in the begginning of the output file.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.fillUpMissingValues">
            <summary>Interpreter empty values as missing values.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.fileEncoding">
            <summary>If the encoding is specified explicitly, it is used on saving output file.
            Otherwise, UTF8 is used either with BOM or not</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.separator">
            <summary>The char that separates values in the file.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.innerSeparator">
            <summary>The char that separates values within a single column, if need.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.inferDims">
            <summary>
            If true, the during loading data set,
            all variables with same length are considered as sharing the same dimension.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.culture">
            <summary>
            Culture determined by the "culture" parameter of the uri.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.#ctor(System.String)">
            <summary>
            Initializes the data set from the uri and returns the instance.
            </summary>
            <param name="uri">Either a file name or DataSet uri formed for the csv provider.</param>
            <remarks>
            <para>
            If the open mode is not specified in the <paramref name="uri"/>, the default value 
            <paramref name="ResourceOpenMode.OpenOrCreate"/> is used.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.GetCsvVariables(System.Collections.Generic.ICollection{Microsoft.Research.Science.Data.Variable})">
            <summary>
            Selects variables implementing ICsvVariable interface
            ans sorts them by their index.
            </summary>
            <param name="variables"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.CreateVariable``1(System.String,System.String[])">
            <summary>
            
            </summary>
            <typeparam name="DataType"></typeparam>
            <param name="varName"></param>
            <param name="dims"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.OnPrecommitting(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            Updates column indices of variables before committing.
            </summary>
            <param name="changes"></param>
            <returns></returns>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.CsvDataSet.ensconcedFileName">
            <summary>Previous version of CSV file is here after precomitting</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.OnPrecommit(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            
            </summary>
            <param name="changes"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.OnCommit">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.OnRollback">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.SafeString(System.String)">
            <summary>
            Makes the string proper to write in a CSV file.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.SafeStringWithInnerSeparator(System.String)">
            <summary>
            Makes the string proper to write in a CSV file.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.SaveToFile(System.Collections.Generic.ICollection{Microsoft.Research.Science.Data.Variable},System.String)">
            <summary>
            Saves the DataSet proposed changes into the given file.
            </summary>
            <param name="vars"></param>
            <param name="fileName"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.SaveCsv(System.IO.Stream,System.Collections.Generic.ICollection{Microsoft.Research.Science.Data.Variable})">
            <summary>
            Saves the DataSet proposed changes into the given stream.
            </summary>
            <param name="outputStream"></param>
            <param name="variables"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.InitializeFromCsv(Microsoft.Research.Science.Data.ResourceOpenMode,System.Boolean)">
            <summary>
            Parses csv-file and thus initializes the data set.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.CsvSplit(System.String,System.Char)">
            <summary>
            Splits the string read from CSV file into columns (unquotes quoted items)
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.CsvSplit(System.String,System.Char,System.Boolean)">
            <summary>
            Splits the string read from CSV file into columns 
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.CsvSplit(System.IO.StreamReader,System.Char,System.Boolean@)">
            <summary>
            Splits the string read from CSV file into columns 
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.CsvSplit(System.IO.StreamReader,System.Char,System.Boolean,System.Boolean@)">
            <summary>
            Splits the string read from CSV file into columns 
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.ParseCsv(System.IO.Stream,System.Collections.Generic.List{System.String},System.Collections.Generic.Dictionary{System.Int32,System.Collections.Generic.Dictionary{System.String,System.Object}})">
            <summary>
            Parses data from *existing* csv-file.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.CsvReadLine(System.IO.StreamReader)">
            <summary>
            Reads the line from the stream taking into account quotes, 
            i.e. supports \n within quoted string.		
            </summary>
            <param name="sr"></param>
            <returns></returns>
            <exception cref="T:System.FormatException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.InitializeVariables(System.Collections.Generic.List{Microsoft.Research.Science.Data.CSV.CsvColumn},System.Collections.Generic.List{System.String[]},System.Collections.Generic.List{Microsoft.Research.Science.Data.Variable})">
            <summary>
            Puts data from read columns into variables
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.InitializeVariable(System.Collections.Generic.List{Microsoft.Research.Science.Data.CSV.CsvColumn},System.Int32,System.Int32,System.Collections.Generic.List{System.String[]},Microsoft.Research.Science.Data.Variable)">
            <summary>
            Puts data into the variable from "flat" csv columns
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.InitializeVariable(Microsoft.Research.Science.Data.CSV.CsvColumn,System.Collections.Generic.List{System.String[]},Microsoft.Research.Science.Data.Variable)">
            <summary>
            Puts data into the variable from csv column
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.ColumnsToVariables(System.Collections.Generic.List{Microsoft.Research.Science.Data.CSV.CsvColumn})">
            <summary>
            Converts CsvColumns parsed from a file to CsvVariable#d.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.ColumnToVariable(Microsoft.Research.Science.Data.CSV.CsvColumn)">
            <summary>
            Converts CsvColumn to CsvVariable#d.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.ColumnsToVariable(System.Collections.Generic.List{Microsoft.Research.Science.Data.CSV.CsvColumn},System.Int32,System.Int32)">
            <summary>
            Converts a number of "flat" CsvColumns to CsvVariable2d.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.InferDimensions(System.Int32,System.Int32)">
            <summary>
            Provides standard names for dimensions, where columnIndex is an index of the column.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.IsEmptyLine(System.String)">
            <summary>
            Line is empty if it has only spaces and separators.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.IsEmptyLine(System.String[])">
            <summary>
            Line is empty if it has only spaces and separators.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.TrimEnd(System.String)">
            <summary>
            Removes empty cells from the end of the string.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.TrimEnd(System.String[])">
            <summary>
            Removes empty cells from the end of the line.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.GetIndexByName(System.String)">
            <summary>
            Gets an index (starting with zero) of the column by its name, e.g. "AA" -> 26.
            Case insensitive.
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvDataSet.GetNameByIndex(System.Int32)">
            <summary>
            Gets the name of the column by its index (starting with zero), e.g. 28 -> "AC". 
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvDataSet.IntegersInTypeInferringEnabled">
            <summary>
            Gets the value indicating whether the type inferring mechanism has used integers (System.Int32) or not during the lading process.
            </summary>
            <remarks>
            For comatibility it is often convenient not to infer numbers as integers, but as doubles, since
            1,2,3 are also 1.0,2.0,3.0 and there is a chance that a user awaits doubles and the type inferer
            will considers them as integers, that leads to a type mismatch exception.
            So, if this property is set to false, the most common type - double - is used in any of this case
            (i.e. 1,2,3 will be considered as doubles).
            If a user is confident that all numbers are integers it is still possible to set the property to true.
            Default value is false.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvDataSet.EnableFlatVariables">
            <summary>
            Gets or sets the values indicating whether to save multidimensional variables as flat table or transform it into 
            a single column.
            </summary>
            <remarks>
            <para>
            Flat representation of 2d variables uses serveral columns to store the single array:
            </para>
            <code>
            A	B			C
            1	11	12	13	a	
            2	21	22	23	b
            </code>
            <para>
            In the example, A and C are one-dimensional variables, and B is a variable with shape 2 rows x 3 columns.
            To indicate a flat variable, its first column has a header text ("B") but following columns have
            empty headers. If the first column has empty header, then use of flat 2d variables is prohibited.
            </para>
            <para>
            If flat variables are disabled, 2d-variables are transformed into a single column, row above row,
            so that the former example should be written as follows:
            </para>
            <code>
            A	B	C
            1	11	a
            2	21	b
            	12
            	22
            	13
            	23
            </code>
            <para>
            The property <see cref="P:Microsoft.Research.Science.Data.CSV.CsvDataSet.EnableFlatVariables"/> makes the provider to save multidimensional variables as flat 
            variables. But it doesn't affect loading process which thus can has variables in both representations.
            Also, flat variables can be enabled in the only case if all variable have display names, otherwise an
            exception will be thrown during save process.
            </para>
            <para>
            The URI of CsvDataSet supports special parameter "flatVariables" which can be either "true"
            or "false" which initializes the property at construction.
            </para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvDataSet.AppendMetadata">
            <summary>
            Gets or sets the value indicating whether the metadata table is appended to the output file or not.
            </summary>
            <remarks>
            If the property is set, the provider saves to the end of an output file special metadata tables which
            can be a reason of incompatibility for some CSV-oriented programs. In the case you should set it false.
            If this property is changed, it starts a transaction to make it possible to save the data set through
            the Commit() method.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.CsvParsingFailedException">
            <summary>
            The exception that is thrown when <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> cannot parse input file.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.CsvUri">
            <summary>
            Allows to customize a URI with parameters specific for the <see cref="T:Microsoft.Research.Science.Data.CSV.CsvDataSet"/> provider.
            </summary>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Create(Microsoft.Research.Science.Data.DataSetUri)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvUri.#ctor(System.String)">
            <summary>
            Instantiates an instance of the class.
            </summary>
            <param name="uri">The DataSet uri.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvUri.#ctor">
            <summary>
            Instantiates an instance of the class with default parameters.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.OpenMode">
            <summary>
            Gets the open resource mode.
            </summary>
            <remarks>
            <para>
            The property gets the <see cref="T:Microsoft.Research.Science.Data.ResourceOpenMode"/> value representing the flag "openMode"
            in the data set URI.
            </para>
            <para>The flag "openMode" specifies how the data set should open a file, 
            data base or whatever resource it uses to store the data.</para>
            <para>
            Possible values for the flag are (case-sensitive):
            <list type="table">
            	<listheader>
            	<term>Mode</term>
            	<description>Description</description>
            	</listheader>
            	<item>
            	<term>createNew</term>
            	<description>Specifies that the data set should create new resource. If the resource already exists, an exception IOException is thrown.</description>
            	</item>
            	<item>
            	<term>open</term>
            	<description>Specifies that the data set should open an existing resource. If the resource does not exist, an exception ResourceNotFoundException is thrown.</description>
            	</item>
            	<item>
            	<term>create</term>
            	<description>Specifies that the data set should create a new resource. If the resource already exists, it will be re-created.</description>
            	</item>
            	<item>
            	<term>openOrCreate</term>
            	<description>Specifies that the data set should open a resource if it exists; otherwise, a new resource should be created.</description>
            	</item>
            </list>
            </para>
            <example>
            <code>
            DataSet dataSet = DataSet.Create("msds:csv?file=data.csv&amp;openMode=open"); 
            </code>
            </example>
            </remarks>
            <seealso cref="!:GetOpenModeOrDefault"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.Encoding">
            <summary>
            Gets or sets the enconding that must be used to read and/or write the CSV file
            (default is "utf-8").
            </summary>
            <remarks>
            Both code page number and name can be used as a string representation of the parameter in URI.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.AppendMetadata">
            <summary>
            Gets or sets the value indicating whether the metadata table is appended to the output file or not.
            </summary>
            <remarks>
            If the property is set, the provider saves to the end of an output file special metadata tables which
            can be a reason of incompatibility for some CSV-oriented programs. In the case you should set it false.
            If this property is changed, it starts a transaction to make it possible to save the data set through
            the Commit() method.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.NoHeader">
            <summary>
            "noHeader=true|false"
            </summary>
            <remarks>
            If the parameter is false, the first line of an input file
            is a header containing display names of variables.
            Otherwise, first line contains data. 
            Note that this parameter doesn't affect an output file. See also
            parameter "saveHeader".
            Default is false.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.SaveHeader">
            <summary>
            "saveHeader=true|false"
            </summary>
            <remarks>
            Parameter defines whether the provider must save a header line into an output file or not.
            If it is not specified, its value depends on the "noHeader" parameter:
            if input file has no header, the header is not saved in the output file, too; and vice versa.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.AppendMetadataDefined">
            <summary>
            Gets the value indicating whether the uri contains appendMetadata parameter or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.FillUpMissingValues">
            <summary>
            Gets the value indicating whether the CSV provider should interpreter empty values
            in a file as missing values or not. Default is false.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.InferInt">
            <summary>
            If the property is true, CSV provider infers following types on loading:
            int, double, DateTime, string, bool. Otherwise, only double, DateTime, string and bool.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.Culture">
            <summary>
            Gets the culture that is to be used to parse a file.
            </summary>
            <remarks>
            Corresponds to optional parameter "culture".
            Default culture is an invariant culture.
            <example>
            msds:csv?file=data-gb.csv&amp;culture=en-GB
            </example>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.InferDims">
            <summary>
            If the value is true, when parsing a file, all variables
            (that have no metadata defined for them)
            with same length are considered as sharing same dimensions.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.UTF8BomEnabled">
            <summary>
            Corresponds to optional parameter "utf8bom=true|false".
            Default is true.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.UTF8BomDefined">
            <summary>
            Gets the value indicating whether the uri contains utf8bom parameter or not.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.FileName">
            <summary>
            Returns filename or null if it's not defined
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.CSV.CsvUri.FileNameDefined">
            <summary>
            Gets the value indicating whether the file parameter is defined or not.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.Delimiter">
            <summary>
            Contains possible delimiters for CsvDataSet files.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.Delimiter.Comma">
            <summary>
            Delimiter character is ','.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.Delimiter.Semicolon">
            <summary>
            Delimiter character is ';'.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.Delimiter.Tab">
            <summary>
            Delimiter character is '\t'.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.CSV.Delimiter.Space">
            <summary>
            Delimiter character is ' '.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariable1d`1.GetInnerData">
            <summary>
            Builds and returns inner data to be presented as a single column.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.CsvVariable2d`1">
            <summary>Class that represents 2D variable in CSV files</summary>
            <typeparam name="DataType">Type of variable. For list of supported types see DataSet specification.</typeparam>
            <remarks>Instances of this call cannot be constructed directly. See 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable"/> for details about creation
            of new variables</remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.CSV.CsvVariableMd`1">
            <summary>Class that represents multidimensional (>=2) variable in CSV files</summary>
            <typeparam name="DataType">Type of variable. For list of supported types see DataSet specification.</typeparam>
            <remarks>Instances of this call cannot be constructed directly. See 
            <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariable"/> for details about creation
            of new variables</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.CSV.CsvVariableScalar`1.GetInnerData">
            <summary>
            Builds and returns inner data to be presented as a single column.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.ChunkedArray">
            <summary>
            Class, used to store multidimensional arrays in chunks.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedArray.rank">
            <summary>
            Array rank
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedArray.chunkSize">
            <summary>
            Total chunk size in bytes
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedArray.chunkSizePow">
            <summary>
            Total chunk size power. chunkSize is 2 ^ chunkSizePow
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedArray.chunkDimSize">
            <summary>
            Chunk size by each dimension
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedArray.chunkDimSizePow">
            <summary>
            Chunk size power by each dimension. chunkDimSize[i] is 2 ^ chunkDimSizePow[i]
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedArray.memoryManager">
            <summary>
            Chunked array memort manager
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.#ctor(System.Int32)">
            <summary>
            Creates an empty array of given name and rank.
            </summary>
            <param name="rank">Array rank</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.GetShape(System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Returns current array shape, stored in this ChunkedArray instance
            </summary>
            <param name="recent">Indicates, whether commited or recent shape is required</param>
            <param name="actual">Indicates, actual shape of array is required.</param>
            <param name="clone">Indicates, whether copy of data is required.</param>
            <returns>Shape</returns>
            <remarks>
            ChunkedArray doesn't support Array shape such as (0,10).
            For example, for array with shape (0,10) if actual = false
            (0,0) will be returned, and if actual = true, (0,10) will
            be returned
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.GetChunkedShape(System.Boolean,System.Boolean)">
            <summary>
            Returns Shape by chunks.
            </summary>
            <param name="recent">Indicates, whether recent or commited data is required.</param>
            <example>
            For example:
            1 2
            3 4
            where number is chunk number
            will have chunk shape 2x2
            </example>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.PutData(System.Int32[],System.Int32[],System.IntPtr)">
            <summary>
            Writes the data to the chunked array starting with the specified origin indices.
            </summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means entire array.</param>
            <param name="data">Data to add to the array.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.GetData(System.Int32[],System.Int32[],System.IntPtr)">
            <summary>Gets copy of data from part of wrapper array</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means entire array.</param>
            <param name="res">An array of data from the specified region</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.GetData(System.Int32[],System.Int32[],System.Int32[],System.Int32,System.IntPtr)">
            <summary>Gets copy of data from part of wrapper array with specified step</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="stride">GetData step. Null means all ones.</param>
            <param name="count">Count of elements to get</param>
            <param name="blockWidth">Width of block(e.g.: 123456 stride == 1 blockWidth == 2 will return 12 45</param>
            <param name="res">An array of data from the specified region and with specified step</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.Reserve(System.Int32[])">
            <summary>
            Reserves place in ChunkedArray chunk table for new changes.
            </summary>
            <param name="shape">Shape of the reserved place</param>
            <remarks>
            This method guarantees , that on Commit stage there will be enougth place in memory
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.Commit">
            <summary>
            Commits uncommited changes
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArray.Rollback">
            <summary>
            Rollbacks uncommited changes
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArray.Rank">
            <summary>
            Array rank.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArray.ChunkDimSize">
            <summary>
            Chunk size (number of elements in chunk).
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArray.ChunkDimSizePow">
            <summary>
            Chunk size power per dimension. ChunkDimSize is 2 ^ ChunkDimSizePow
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper">
            <summary>
            Wraps ChunkedArray class.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.#ctor(System.Int32,System.Type)">
            <summary>
            Creates new instance of ChunkedArrayWrapper</summary>
            <param name="rank">Rank of array</param>
            <param name="type">Type of array elements</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.#ctor(System.Int32,System.Type,System.Int32[])">
            <summary>
            Creates new instance of ChunkedArrayWrapper</summary>
            <param name="rank">Rank of array</param>
            <param name="type">Type of array elements</param>
            <param name="chunkShape">Chunk shape</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper._IsSupported(System.Type)">
            <summary>
            Checks if argument type is supported by argument type
            </summary>
            <param name="type">Type to check</param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.GetData(System.Int32[],System.Int32[])">
            <summary>Returns copy of data from part of wrapper array</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means entire array.</param>
            <returns>An array of data from the specified region.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.GetData(System.Int32[])">
            <summary>Returns copy of data from part of wrapper array</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <returns>An array of data from the specified region.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.GetData(System.Int32[],System.Int32[],System.Int32[])">
            <summary>Returns copy of data from part of wrapper array with specified step</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="stride">GetData step. Null means all ones.</param>
            <param name="count">Count of elements to get</param>
            <returns>An array of data from the specified region and with specified step.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.PutData(System.Int32[],System.Int32[],System.Array)">
            <summary>
            Writes the data to the wrapped array starting with the specified origin indices.
            </summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means entire array.</param>
            <param name="array">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.PutData(System.Int32[],System.Array)">
            <summary>
            Writes the data to the wrapped array starting with the specified origin indices.
            </summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="array">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.Reserve(System.Int32[])">
            <summary>
            Reserves place in ChunkedArray for new changes.
            </summary>
            <param name="shape">Shape of the reserved place</param>
            <remarks>
            This method guarantees , that on Commit stage there will be enougth place in memory
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.Commit">
            <summary>
            Commits uncommited changes
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.Rollback">
            <summary>
            Rollbacks uncommited changes
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper._GetArrayShape(System.Array)">
            <summary>
            Returns shape of the specified array
            </summary>
            <param name="array">Array</param>
            <returns>Array shape</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper._ToDateTimeArray(System.Array)">
            <summary>
            Converts array of long values to array of DateTime values
            </summary>
            <param name="array">Array of long values</param>
            <returns>Array of DateTime values</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper._FromDateTimeArray(System.Array)">
            <summary>
            Converts array of DateTime values to array of long values
            </summary>
            <param name="array">Array of DateTime values</param>
            <returns>Array of long values</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.Rank">
            <summary>Returns rank of wrapper array.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.Shape">
            <summary>Return array with shape of wrapper array. Returned array is a copy, so
            it can be modified in any way without affecting ChunkedArrayWrapper</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.DataType">
            <summary>Return type of elements for this array</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.IsEmpty">
            <summary>
            Returns a bool value indicating whether ChunkedArray is empty
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedArrayWrapper.Commited">
            <summary>
            Indicates, whether ChunkedArray contains uncommited values.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager">
            <summary>
            Chunked memory manager class. Used to add, store and get ranges of chunks for ChunkedArray.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.rank">
            <summary>
            Array rank
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.chunkDimSize">
            <summary>
            Chunk size per each dimension
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.chunkDimSizePow">
            <summary>
            Chunk size power per each dimension
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.recentChunkTable">
            <summary>
            Represents chunk table, that contains commited and uncommited changes
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.commitedChunkTable">
            <summary>
            Represents chunk table, that contains commited changes only
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.blockHandles">
            <summary>
            Pinned block handles
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.chunkSize">
            <summary>
            Chunk size
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.blockIndex">
            <summary>
            Index, used to go through allocated chunks
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.GetShape(System.Boolean,System.Boolean,System.Boolean)">
            <summary>
            Returns current array shape, stored in this ChunkedMemoryManager instance
            </summary>
            <param name="recent">Indicates, whether commited or recent shape is required</param>
            <param name="actual">Indicates, actual shape of array is required.</param>
            <param name="clone">Indicates, whether copy of data is required.</param>
            <returns>Shape</returns>
            <remarks>
            For example, for array with shape (0,10) if actual = false
            (0,0) will be returned, and if actual = true, (0,10) will
            be returned
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.GetChunkedShape(System.Boolean,System.Boolean)">
            <summary>
            Returns current array chunked shape, stored in this ChunkedMemoryManager instance
            </summary>
            <param name="recent">Indicates, whether commited or recent shape is required</param>
            <param name="clone">Indicates, whether copy of data is required.</param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.#ctor(System.Int32,System.Int32[],System.Int32[],System.Int32)">
            <summary>
            Creates new instance of chunked memory manager
            </summary>
            <param name="rank">Chunk rank</param>
            <param name="chunkDimSize">Chunk size per each dimension</param>
            <param name="chunkDimSizePow">Chunk size power per each dimension</param>
            <param name="chunkSize">Chunk size</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.GetBlocks(System.Int32[],System.Int32[],System.Boolean,System.Boolean)">
            <summary>
            Returns specified blocks range from ChunkedMemoryManager
            </summary>
            <param name="origin">Origin of the specified range</param>
            <param name="shape">Shape of the specified range</param>
            <param name="commited">Indicates, whether commited or not commited data is requested</param>
            <param name="resize">Indicates,if resize is requested</param>
            <returns>Specified blocks range</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.FreeBlocks">
            <summary>
            Frees blocks, returned by GetBlocks method
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.Commit">
            <summary>
            Commits uncommited changes
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.Rollback">
            <summary>
            Rollbacks uncommited changes
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.Reserve(System.Int32[])">
            <summary>
            Reserves place in ChunkedMemoryManager chunk table for new changes.
            </summary>
            <param name="shape">Shape of the reserved place</param>
            <remarks>
            This method guarantees , that on Commit stage there will be enougth place in memory
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.Pin(System.Byte[],System.Runtime.InteropServices.GCHandle@)">
            <summary>
            Pins array and 
            returns it's IntPtr and GCHandle
            </summary>
            <param name="data">Byte array</param>
            <param name="handle">Array handle</param>
            <returns>Pointer to specified array</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.Unpin(System.Runtime.InteropServices.GCHandle)">
            <summary>
            Unpins array, pinned by Allocate method
            </summary>
            <param name="handle">Array handle</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.ChunkDimSize">
            <summary>
            Chunk size per each dimension
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.ChunkDimSizePow">
            <summary>
            Chunk size power per each dimension
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedMemoryManager.Commited">
            <summary>
            Indicates, whether ChunkedMemoryManager contains uncommited values.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.ChunkTable">
            <summary>
            This class represents chunked data storage
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkTable.minBlocksArraySize">
            <summary>
            Minimum blocks array size
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable.#ctor(System.Int32,System.Int32,System.Int32[],System.Int32[])">
            <summary>
            Creates new instance of chunk table
            </summary>
            <param name="rank">Chunk table rank</param>
            <param name="chunkSize">Chunk size in bytes</param>
            <param name="chunkDimSize">Chunk size per each dimension</param>
            <param name="chunkDimSizePow">Chunk size power per each dimension</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable._MulBlockArraySize(System.Int32)">
            <summary>
            Multiplies current Blocks array size on the specified value
            </summary>
            <param name="value">multiply value</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable._AllocateMemory(System.Int32,System.Int32)">
            <summary>
            Allocates memory in blocks array
            </summary>
            <param name="start">starting allocation index</param>
            <param name="count">number of blocks to allocate</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable._AllocateMemory(System.Int32)">
            <summary>
            Allocates memory in blocks array where blocks are null
            </summary>
            <param name="count">Total blocks count</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable._InsertBlocks(System.Int32,System.Int32,Microsoft.Research.Science.Data.Memory.ChunkTable)">
            <summary>
            Inserts new blocks into ChunkTable with specified period
            </summary>
            <param name="period">Period. index % (period + i) == 0. i=0, count</param>
            <param name="count">Count of elements to insert to the end of each period</param>
            <param name="res">Resulting chunk table</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable._AddBlocks(System.Int32,Microsoft.Research.Science.Data.Memory.ChunkTable)">
            <summary>
            Adds blocks to the end of the chunk table
            </summary>
            <param name="count">Number of blocks to add</param>
            <param name="res">Resulting chunk table</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable.Resize(System.Int32[],System.Int32[],System.Boolean)">
            <summary>
            Resizes chunk table and returns it as result
            </summary>
            <param name="shapeTotal">Shape</param>
            <param name="chunkedShapeTotal">Chunked shape</param>
            <param name="clone">Indicates, whether copy or original ChunkTable is required</param>
            <returns>Chunk table</returns>
            <remarks>
            This method creates new blocks array and copies old values into array.
            It is faster than _ResizeWithOldBuffer, but it creates new array
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable.ShallowClone">
            <summary>
            Creates shallow copy of this chunk table
            </summary>
            <returns>Shallow copy</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable.UpdateActualShapes(System.Int32[],System.Int32[])">
            <summary>
            Updates array actual shapes
            </summary>
            <param name="actualShape">Actual shape</param>
            <param name="actualChunkedShape">Actual chunked shape</param>
            <remarks>
            ChunkedArray doesn't support Array shape such as (0,10)
            This property updates array current actual shape
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkTable.SetActualShapesNull">
            <summary>
            Sets array actual shapes to null
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.Rank">
            <summary>
            Data rank
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.Blocks">
            <summary>
            Data blocks
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.BlocksCount">
            <summary>
            Current blocks count
            </summary>
            <remarks>
            Blocks.Length doesn't show current blocks count, 
            because this array may contain null values in it's end
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.Shape">
            <summary>
            Represents current shape of data, stored in this chunk table
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.ActualShape">
            <summary>
            Represents current actual shape
            </summary>
            <remarks>
            ChunkedArray doesn't support Array shape such as (0,10)
            This property stores array shape in such cases and
            null in other cases
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.ActualChunkedShape">
            <summary>
            Represents current actual chunked shape
            </summary>
            <remarks>
            ChunkedArray doesn't support Array shape such as (0,10)
            This property stores array chunked shape in such cases and
            null in other cases
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.ContainsActualShape">
            <summary>
            Indicates, whether chunk table contains actual shape
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.ChunkedShape">
            <summary>
            Represents current chunked shape of data, stored in this chunk table
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.ChunkDimSize">
            <summary>
            Chunk size per each dimension
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkTable.ChunkDimSizePow">
            <summary>
            Chunk size power per each dimension
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.IArrayFactory">
            <summary>
            Facilitates creating a IArray instance
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.IArrayFactory.Create(System.Int32,System.Type)">
            <summary>
            Creates new IArray instance
            </summary>
            <param name="rank">Rank</param>
            <param name="type">Data type</param>
            <returns>new IArray instance</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.IArrayFactory.Create(System.Int32,System.Type,System.Int32[])">
            <summary>
            Creates new IArray instance
            </summary>
            <param name="rank">Rank</param>
            <param name="type">Data type</param>
            <param name="shapes">Chunk shape for array</param>
            <returns>new IArray instance</returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.VsmService.Rectangles.IndexRect">
            <summary>
            Represents an index rectangle of custom rank.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.VsmService.Rectangles.IndexRect.IsEmpty">
            <summary>
            Gets the value indicating whether a rectangle is empty or not.
            </summary>
            <remarks>
            Rectangle is empty if at least one its shape element is zero.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.MulDimIndex">
            <summary>
            Class, used as multidimensional index for going through elements of multidimensional arrays,
            stored in flat arrays.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.#ctor(System.Int32[],System.Int32[],System.Int32)">
            <summary>
            Creates new instance of Multidimensional index
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="rank">Index rank</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.#ctor(System.Int32[],System.Int32[],System.Int32,System.Int32[])">
            <summary>
            Creates new instance of Multidimensional index
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="rank">Index rank</param>
            <param name="dataShape">Shape of data. By default, dataShape == shape</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.#ctor(System.Int32[],System.Int32[],System.Int32[],System.Int32)">
            <summary>
            Creates new instance of Multidimensional index
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="stride">Stride of index</param>
            <param name="rank">Index rank</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.#ctor(System.Int32[],System.Int32[],System.Int32[],System.Int32,System.Int32[])">
            <summary>
            Creates new instance of Multidimensional index
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="stride">Stride of index</param>
            <param name="rank">Index rank</param>
            <param name="dataShape">Shape of data. By default, dataShape == shape</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.#ctor(System.Int32)">
            <summary>
            Creates new instance of Multidimensional index
            </summary>
            <param name="rank">Index rank</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.Set(System.Int32[],System.Int32[],System.Int32)">
            <summary>
            Resets created multidimensional index instance
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="rank">Index rank</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.Set(System.Int32[],System.Int32[],System.Int32,System.Int32[])">
            <summary>
            Resets created multidimensional index instance
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="rank">Index rank</param>
            <param name="dataShape">Shape of data. By default, dataShape == shape</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.Set(System.Int32[],System.Int32[],System.Int32[],System.Int32)">
            <summary>
            Resets created multidimensional index instance
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="stride">Stride of index</param>
            <param name="rank">Index rank</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.Set(System.Int32[],System.Int32[],System.Int32[],System.Int32,System.Int32[])">
            <summary>
            Resets created multidimensional index instance
            </summary>
            <param name="origin">Origin of specified index range</param>
            <param name="shape">Shape of specified index range</param>
            <param name="stride">Stride of index</param>
            <param name="rank">Index rank</param>
            <param name="dataShape">Shape of data. By default, dataShape == shape</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.Add(System.Int32)">
            <summary>
            Adds specified value to index
            </summary>
            <param name="value">Value to add</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex.AddStride">
            <summary>
            Adds stride to index
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex._GetIndex(System.Int32[],System.Int32[],System.Int32)">
            <summary>
            Returns flat index from it's multidimensional representation
            </summary>
            <param name="index">Multidimensional index</param>
            <param name="shape">Array shape</param>
            <param name="rank">Array rank</param>
            <returns>Index</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex._GetIndexInRange(System.Int32[],System.Int32[],System.Int32[],System.Int32)">
            <summary>
             Returns flat index from it's multidimensional representation, but in (origin, shape) range
            </summary>
            <param name="index">Multidimensional index</param>
            <param name="origin">Array origin</param>
            <param name="shape">Array shape</param>
            <param name="rank">Array rank</param>
            <returns>Index</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MulDimIndex._GetLength(System.Int32[],System.Int32)">
            <summary>
            Returns multidimensional array length
            </summary>
            <param name="shape">Array shape</param>
            <param name="rank">Array rank</param>
            <returns>Array length</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.MulDimIndex.Current">
            <summary>
            Current index value
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.MulDimIndex.CurrentScalar">
            <summary>
            Returns current index scalar value
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.MulDimIndex.CurrentInRangeScalar">
            <summary>
            Returns current index scalar value, but in [origin, shape] rectangle.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.MulDimIndex.IsInBounds">
            <summary>
            Indicates if current index value is in specified bounds
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.#ctor(Microsoft.Research.Science.Data.Memory.IArray,System.Collections.Generic.List{Microsoft.Research.Science.Data.Memory.Patch})">
            <summary>
            Creates new instance of PatchedArrayWrapper class
            </summary>
            <param name="array">Class instance, that realizes IArray interface</param>
            <param name="patches">Patched to apply</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.GetData(System.Int32[],System.Int32[])">
            <summary>Returns copy of data from part of wrapper array</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means entire array.</param>
            <returns>An array of data from the specified region.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.GetData(System.Int32[],System.Int32[],System.Int32[])">
            <summary>Returns copy of data from part of wrapper array with specified step</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="stride">GetData step. Null means all ones.</param>
            <param name="count">Count of elements to get</param>
            <returns>An array of data from the specified region and with specified step.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.ApplyPatch(System.Array,System.Array,Microsoft.Research.Science.Data.VsmService.Rectangles.IndexRect)">
            <summary>
            Applies a patch to a given place of the array.
            </summary>
            <param name="array">Array to apply to</param>
            <param name="patch">Patch to appy</param>
            <param name="roi">Rectangle, in which to apply</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.ApplyPatchBase(System.Array,System.Array,Microsoft.Research.Science.Data.VsmService.Rectangles.IndexRect)">
            <summary>
            Applies a patch to a given place of the array.
            </summary>
            <param name="array">Array to apply to</param>
            <param name="patch">Patch to appy</param>
            <param name="roi">Rectangle, in which to apply</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.ApplyPatch(System.Array,System.Array,System.Int32[],System.Int32[])">
            <summary>
            Applies a patch to a given place of the array.
            </summary>
            <param name="array"></param>
            <param name="patch"></param>
            <param name="origin"></param>
            <param name="shape"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.GetPatch(System.Array,Microsoft.Research.Science.Data.VsmService.Rectangles.IndexRect)">
            <summary>
            Extracts patch from the array a sub-array corresponding to roi.
            </summary>
            <param name="array">Array to extract from</param>
            <param name="roi">Needed rectangle</param>
            <returns>Extracted patch</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.GetPatch(System.Array,System.Int32[],System.Int32[],System.Int32[])">
            <summary>
            Extracts patch from the array a sub-array corresponding to rectangle and with specified stride.
            </summary>
            <param name="array">Array to extract from</param>
            <param name="origin">Data origin</param>
            <param name="stride">Data stride</param>
            <param name="count">Data count</param>
            <returns>Extracted patch</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.ArrayPatch(System.Type,System.Int32[],System.Int32[],System.Array,System.Collections.Generic.List{Microsoft.Research.Science.Data.Memory.Patch})">
            <summary>
            Returns patched array
            </summary>
            <param name="elementType">Element data type</param>
            <param name="origin">Data origin</param>
            <param name="shape">Data shape</param>
            <param name="basePatch">Base patch, which contains all array commited data</param>
            <param name="patches">List of patches</param>
            <returns>Patched array</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.ArrayPatch(System.Type,System.Int32[],System.Int32[],System.Int32[],System.Int32[],System.Array,System.Collections.Generic.List{Microsoft.Research.Science.Data.Memory.Patch})">
            <summary>
            Returns patched array
            </summary>
            <param name="elementType">Element data type</param>
            <param name="origin">Data origin</param>
            <param name="stride">Data stride</param>
            <param name="count">Data count</param>
            <param name="shape">Data shape</param>
            <param name="basePatch">Base patch, which contains all array commited data</param>
            <param name="patches">List of patches</param>
            <returns>Patched array</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.Rank">
            <summary>Returns rank of wrapper array</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.DataType">
            <summary>Return type of elements for this array</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.IsEmpty">
            <summary>
            Returns a bool value which indicates whether SolidArrayWrapper is empty
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper.Shape">
            <summary>Return array with shape of wrapper array. Returned array is a copy, so
            it can be modified in any way without affecting ChunkedArrayWrapper</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.PatchedArrayWrapper._HasPatches">
            <summary>
            Indicates, whether PatchedArray contains patches
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper">
            <summary>
            Keeps array, its rank and type. Empty and zero-rank arrays are supported.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.commitedArray">
            <summary>Array of holding actual commited data. Can be null if there is no data</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.recentArray">
            <summary>Array of holding resent not commited data. Can be null if there is no uncommited data</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.rank">
            <summary>Rank of array. Valid even if <see cref="F:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.commitedArray"/> field is null</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.type">
            <summary>Type of array elements. Valid even if <see cref="F:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.type"/> field is null</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.#ctor(System.Int32,System.Type)">
            <summary>Initializes a new instance of ArrayWrapper with specified rank and type of elements
            but without data</summary>
            <param name="rank">Rank of array. Zero-ranked arrays are also supported.</param>
            <param name="type">Type of array elements</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.GetData(System.Int32[],System.Int32[])">
            <summary>Returns copy of data from part of wrapper array</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="shape">The shape of the region. Null means entire array.</param>
            <returns>An array of data from the specified region.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.GetStride(System.Array,System.Int32[],System.Int32[])">
            <summary>
            Subsets the array with given strides and count parameters.
            </summary>
            <param name="a"></param>
            <param name="stride"></param>
            <param name="outputCount"></param>
            <returns>An array that is a subset of the source array.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.GetData(System.Int32[],System.Int32[],System.Int32[])">
            <summary>Returns copy of data from part of wrapper array with specified step</summary>
            <param name="origin">The origin of the window (e.g., the left-bottom corner). Null means all zeros.</param>
            <param name="stride">GetData step. Null means all ones.</param>
            <param name="count">Count of elements to get</param>
            <returns>An array of data from the specified region and with specified step.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.PutData(System.Int32[],System.Array)">
            <summary>Writes the data to the wrapped array starting with the specified origin indices.
            </summary>
            <param name="origin">Indices to start adding of data. Null means all zeros.</param>
            <param name="a">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.CopyArrayBase(System.Array,System.Array,System.Int32[],System.Int32[],System.Boolean)">
            <summary>
            Base realization of Copy array and the slowest one
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Clone">
            <summary>Creates a copy of ArrayWrapper instance</summary>
            <returns>Full copy of ArrayWrapper</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Commit">
            <summary>
            Commits uncommited changes
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Rollback">
            <summary>
            Rollbacks uncommited changes
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Reserve(System.Int32[])">
            <summary>
            Reserves place in Array for new changes.
            </summary>
            <param name="shape">Shape of the reserved place</param>
            <remarks>
            This method guarantees , that on Commit stage there will be enougth place in memory
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Data">
            <summary>Gets or sets data for the array</summary>
            <remarks>Array is not copied to the wrapper, so modification of assigned
            array means modification of ArrayWrapper</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Rank">
            <summary>Returns rank of wrapper array. Note that zero-ranked array are supported</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Shape">
            <summary>Return array with shape of wrapper array. Returned array is a copy, so
            it can be modified in any way without affecting ArrayWrapper</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.DataType">
            <summary>Return type of elements for this array</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.IsEmpty">
            <summary>
            Returns a bool value which indicates whether SolidArrayWrapper is empty
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.SolidArrayWrapper.Commited">
            <summary>
            Indicates whether SolidArrayWrapper conteins uncommited data
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet">
            <summary>
            A <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider that keeps all data in memory.
            </summary>
            <remarks>
            <para>
            Supports variables of any non-negative rank.
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet"/> accepts following parameters in the URI
            (read about DataSet URIs here: <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>;
            about preliminary URI customization <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>):
            <list type="table">
            <listheader>
              <term>Parameter</term>
              <description>Description</description>
            </listheader>
            <item>
            	<term>name=DataSetName</term>
            	<description>Name of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</description>
            </item>
             <item>
            	<term>include</term>
            	<description>Allows including variables as references from another <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, defined as a URI,
            	into this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            	Example: <c>msds:memory?include=msds%3Acsv%3Ffile%example.csv%23lat%2Clon</c> 
            	(escaped version of <c>"msds:memory2?include=escape[msds:csv?file=example.csv#lat,lon]"</c>)
            	includes variables <c>lat</c> and <c>lon</c> from <c>msds:csv?file=example.csv</c>. If variables names are not specified,
            	all variables are included.</description>
            </item>
            </list>
            </para>	
            <example>
            Creates the <see cref="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet"/> and adds a <see cref="T:Microsoft.Research.Science.Data.Variable"/> depending on dimension "x", initialized with an array:
            <code>
            using(DataSet ds = DataSet.Open("msds:memory2"))
            {
                Variable&lt;int&gt; var = ds.AddVariable&lt;int&gt;("var", "x");
                var.PutData(new int[] { 1, 2, 3 });
            }
            </code>
            </example>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet.TraceMemoryDataSet">
            <summary>
            Filters trace messages related to the DataSet.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet.#ctor">
            <summary>
            Initializes an instance.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet.#ctor(System.String)">
            <summary>
            Initializes an instance.
            </summary>
            <param name="uri"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet.#ctor(System.Boolean)">
            <summary>
            Derived class must use the constructor to instantiate the data set.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet.CreateVariable``1(System.String,System.String[])">
            <summary>
            
            </summary>
            <typeparam name="DataType"></typeparam>
            <param name="varName"></param>
            <param name="dims"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet.GetRecentData(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Gets the recent data from given memory variable.
            </summary>
            <param name="variable"></param>
            <returns></returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryUri">
            <summary>
            Allows to customize a URI with parameters specific for the <see cref="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryDataSet"/> provider.
            </summary>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Create(Microsoft.Research.Science.Data.DataSetUri)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryUri.#ctor(System.String)">
            <summary>
            Instantiates an instance of the class.
            </summary>
            <param name="uri">The DataSet uri.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryUri.#ctor">
            <summary>
            Instantiates an instance of the class with default parameters.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryUri.#ctor(System.String,System.Boolean)">
            <summary>
            Instantiates an instance of the class.
            </summary>
            <param name="doCheck">Determines whether the class should check the uri provider name or not.</param>
            <param name="uri">The DataSet uri.</param>
            <remarks><para>The constructor is to be used by derived DataSetUri classes
            to enable use of provider names different from "memory".</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.ChunkedMemoryUri.Name">
            <summary>
            Name of the DataSet.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1">
            <summary>
            MemoryVariable stores all data in memory.
            </summary>
            <typeparam name="DataType"></typeparam>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.IMemoryVariable">
            <summary>
            The variable implementing the interface is a MemoryVariable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.IInternalChunkedMemoryVariable.GetRecentData">
            <summary>
            Gets the recent data from the variable.
            </summary>
            <returns></returns>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1.array">
            <summary>Array holding actual data for variable. 
            It is <see cref="T:Microsoft.Research.Science.Data.ArrayWrapper"/> so it holds information
            about rank and size even if there is no data values.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="sds"></param>
            <param name="name"></param>
            <param name="dims"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[],System.Int32[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="sds"></param>
            <param name="name"></param>
            <param name="dims"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1.Microsoft#Research#Science#Data#Memory#IInternalChunkedMemoryVariable#GetRecentData">
            <summary>
            Gets the recent data from the variable.
            </summary>
            <returns></returns>
            <remarks>
            The method is to be called from the DataSet.OnPrecommit method.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1.WriteData(System.Int32[],System.Array)">
            <summary>
            Writes the data to the variable's underlying storage starting with the specified origin indices.
            Each operation is a part of a transaction, opened with the BeginWriteTransaction() method.
            *It is called in the precommit stage*
            </summary>
            <remarks>
            <para>A sequence of such outputs with same transaction can be either committed by CommitWrite() or
            rolled back by RollbackWrite().</para>
            <para>Parameter <paramref name="origin"/> for data piece produced by Append operation
            in given to the method already transformed and contains actual values.</para>
            </remarks>
            <param name="origin">Indices to start adding of data. Null means all zeros.</param>
            <param name="a">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1.ReadData(System.Int32[],System.Int32[])">
            <summary>Reads array of values from variable</summary>
            <param name="origin">Origin of region to read. Null origin means all zeros</param>
            <param name="shape">Shape of region to read. Null shape means entire array of data.</param>
            <returns>Array of values loaded from variable</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.ChunkedMemoryVariable`1.ReadData(System.Int32[],System.Int32[],System.Int32[])">
            <summary>Reads array of values from variable with specified stride</summary>
            <param name="origin">Origin of region to read. Null origin means all zeros</param>
            /<param name="stride">Step, to read with. Null stride means all ones</param>
            <param name="count">Count of elements to read.</param>
            <returns>Array of values loaded from variable</returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet">
            <summary>
            A <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider that keeps all data in memory.
            </summary>
            <remarks>
            <para>
            Supports variables of any non-negative rank.
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"/> accepts following parameters in the URI
            (read about DataSet URIs here: <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>;
            about preliminary URI customization <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>):
            <list type="table">
            <listheader>
              <term>Parameter</term>
              <description>Description</description>
            </listheader>
            <item>
            	<term>name=DataSetName</term>
            	<description>Name of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</description>
            </item>
             <item>
            	<term>include</term>
            	<description>Allows including variables as references from another <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, defined as a URI,
            	into this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            	Example: <c>msds:memory?include=msds%3Acsv%3Ffile%example.csv%23lat%2Clon</c> 
            	(escaped version of <c>"msds:memory?include=escape[msds:csv?file=example.csv#lat,lon]"</c>)
            	includes variables <c>lat</c> and <c>lon</c> from <c>msds:csv?file=example.csv</c>. If variables names are not specified,
            	all variables are included.</description>
            </item>
            </list>
            </para>	
            <example>
            Creates the <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"/> and adds a <see cref="T:Microsoft.Research.Science.Data.Variable"/> depending on dimension "x", initialized with an array:
            <code>
            using(DataSet ds = DataSet.Open("msds:memory"))
            {
                Variable&lt;int&gt; var = ds.AddVariable&lt;int&gt;("var", "x");
                var.PutData(new int[] { 1, 2, 3 });
            }
            </code>
            </example>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.MemoryDataSet.TraceMemoryDataSet">
            <summary>
            Filters trace messages related to the DataSet.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryDataSet.#ctor">
            <summary>
            Initializes an instance.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryDataSet.#ctor(System.String)">
            <summary>
            Initializes an instance.
            </summary>
            <param name="uri"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryDataSet.#ctor(System.Boolean)">
            <summary>
            Derived class must use the constructor to instantiate the data set.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryDataSet.CreateVariable``1(System.String,System.String[])">
            <summary>
            
            </summary>
            <typeparam name="DataType"></typeparam>
            <param name="varName"></param>
            <param name="dims"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryDataSet.GetRecentData(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Gets the recent data from given memory variable.
            </summary>
            <param name="variable"></param>
            <returns></returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.MemoryUri">
            <summary>
            Allows to customize a URI with parameters specific for the <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"/> provider.
            </summary>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Create(Microsoft.Research.Science.Data.DataSetUri)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryUri.#ctor(System.String)">
            <summary>
            Instantiates an instance of the class.
            </summary>
            <param name="uri">The DataSet uri.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryUri.#ctor">
            <summary>
            Instantiates an instance of the class with default parameters.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Memory.MemoryUri.Name">
            <summary>
            Name of the DataSet.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Memory.MemoryVariable`1">
            <summary>
            MemoryVariable stores all data in memory.
            </summary>
            <typeparam name="DataType"></typeparam>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.IInternalMemoryVariable.GetRecentData">
            <summary>
            Gets the recent data from the variable.
            </summary>
            <returns></returns>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.MemoryVariable`1.array">
            <summary>Array holding actual data for variable. 
            It is <see cref="T:Microsoft.Research.Science.Data.ArrayWrapper"/> so it holds information
            about rank and size even if there is no data values.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Memory.MemoryVariable`1.copyArray">
            <summary>Committed data (enables rollback).</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[])">
            <summary>
            Initializes an instance of the variable.
            </summary>
            <param name="sds"></param>
            <param name="name"></param>
            <param name="dims"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryVariable`1.#ctor(Microsoft.Research.Science.Data.DataSet,System.String,System.String[],Microsoft.Research.Science.Data.ArrayWrapper)">
            <summary>
            
            </summary>
            <param name="sds"></param>
            <param name="name"></param>
            <param name="dims"></param>
            <param name="wrapper"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryVariable`1.Microsoft#Research#Science#Data#Memory#IInternalMemoryVariable#GetRecentData">
            <summary>
            Gets the recent data from the variable.
            </summary>
            <returns></returns>
            <remarks>
            The method is to be called from the DataSet.OnPrecommit method.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryVariable`1.WriteData(System.Int32[],System.Array)">
            <summary>
            Writes the data to the variable's underlying storage starting with the specified origin indices.
            Each operation is a part of a transaction, opened with the BeginWriteTransaction() method.
            *It is called in the precommit stage*
            </summary>
            <remarks>
            <para>A sequence of such outputs with same transaction can be either committed by CommitWrite() or
            rolled back by RollbackWrite().</para>
            <para>Parameter <paramref name="origin"/> for data piece produced by Append operation
            in given to the method already transformed and contains actual values.</para>
            </remarks>
            <param name="origin">Indices to start adding of data. Null means all zeros.</param>
            <param name="a">Data to add to the variable.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Memory.MemoryVariable`1.ReadData(System.Int32[],System.Int32[])">
            <summary>Reads array of values from variable</summary>
            <param name="origin">Origin of region to read. Null origin means all zeros</param>
            <param name="shape">Shape of region to read. Null shape means entire array of data.</param>
            <returns>Array of values loaded from variable</returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet">
            <summary>
            A <see cref="T:Microsoft.Research.Science.Data.DataSet"/> provider that wraps the NetCDF4 interface.
            </summary>
            <remarks>
            <para>
            The provider requires a managed NetCDF.Interop.dll library (either x86 or x64 version, depending on the platform) to work.
            The current Scientific DataSet release runtime package includes netcdf4.dll
            built from Unidata's source codes for NetCDF Release 4.1.3
            with statically linked satellite libraries (including HDF5 1.8.7).
            (Default chunk cache size is 32 Mb, number of elements is 1009 and preemption policy is 0.75.)
            </para>
            <para>
            The provider supports variables of any non-negative rank.
            </para>	
            <para>
            The provider is associated with the provider name "nc" and extensions ".nc".
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/> accepts following parameters in the URI
            (read about DataSet URIs here: <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>;
            about preliminary URI customization <see cref="M:Microsoft.Research.Science.Data.DataSetUri.Create(System.String)"/>):
            <list type="table">
            <listheader>
              <term>Parameter</term>
              <description>Description</description>
            </listheader>
             <item>
            	<term>file=path_to_file</term>
            	<description>Specifies the file to open or create.</description>
            </item>
             <item>
            	<term>openMode=createNew|create|open|openOrCreate|readOnly</term>
            	<description>
            	The flag "openMode" specifies how the data set should open a file, 
            data base or whatever resource it uses to store the data.
            Possible values for the flag are:
            <list type="table">
            	<listheader>
            	<term>Mode</term>
            	<description>Description</description>
            	</listheader>
            	<item>
            	<term>createNew</term>
            	<description>Specifies that the data set should create new resource. If the resource already exists, an exception IOException is thrown.</description>
            	</item>
            	<item>
            	<term>open</term>
            	<description>Specifies that the data set should open an existing resource. If the resource does not exist, an exception ResourceNotFoundException is thrown.</description>
            	</item>
            	<item>
            	<term>readOnly</term>
            	<description>Specifies that the data set should open an existing resource for reading only. If the resource does not exist, an exception ResourceNotFoundException is thrown.</description>
            	</item>
            	<item>
            	<term>create</term>
            	<description>Specifies that the data set should create a new resource. If the resource already exists, it will be re-created.</description>
            	</item>
            	<item>
            	<term>openOrCreate</term>
            	<description>Specifies that the data set should open a resource if it exists; otherwise, a new resource should be created.</description>
            	</item>
            </list>
            	</description>
            	If the input file is read only, the constructed data set is always read only.
            	Consider cloning it into a <see cref="T:MemoryDataSet"/> to modify.
                See <see cref="M:Microsoft.Research.Science.Data.DataSet.Clone(System.String)"/>.
            </item>
            <item>
                <term>deflate=off|store|fastest|fast|normal|good|best</term>
                <description>
                Defines the data compression level. Affects only new variables,
                added to the DataSet.
                Default is <c>normal</c>.
                Example: <c>msds:nc?file=output.nc&amp;openMode=create&amp;deflate=good</c>.
                </description>
            </item>
            <item>
                <term>trimZero=true|false</term>
                <description>
                Indicates whether the provider should trim trailing zero (\x00 symbol) when reads attribute values or not.
                This enables correct reading of attributes from NetCDF files created by C code with \x00 appended.
                Default is false.
                </description>
            </item>
             <item>
            	<term>enableRollback=true|false</term>
            	<description>Indicates whether the rollback is enabled or not. If enabled, each transaction will
            lead to making a back-up of the underlying file for further possible restoration. If disabled, rollback will throw
            an exception when it is invoked. Set it for datasets having not only NetCDF variables and consider set it false
            to significantly increase performance. Default is true.</description>
            </item>
             <item>
            	<term>include</term>
            	<description>Allows including variables as references from another <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, defined as a URI,
            	into this <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.
            	Example: <c>msds:memory?include=msds%3Acsv%3Ffile%example.csv%23lat%2Clon</c> 
            	(escaped version of <c>"msds:memory?include=escape[msds:csv?file=example.csv#lat,lon]"</c>)
            	includes variables <c>lat</c> and <c>lon</c> from <c>msds:csv?file=example.csv</c>. If variables names are not specified,
            	all variables are included.</description>
            </item>
            </list>
            </para>	
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/> provider supports URIs containing a path
            and appended through '?' parameters: <c>c:\data\air0.nc?openMode=open&amp;enableRollback=false</c>.
            </para>
            <para>
            In a NetCDF4 file all variables are stored as a set of chunks. The chunk size
            must be specified for each new variable and it cannot be changed later. Both read/write performance and output file size depend on the selection of the chunk size.
            Too small or too large chunks or wrong shape of a multidimensional chunk, relatively to the actually stored array's size and shape, can decrease performance and increase output file size.
            The chunk size selection algorithm, which is implemented in the <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/>, is aimed at a general case, therefore
            we define square chunks with size providing good performance and file size when storing arrays with length from 0 to about a million of elements.
            The algorithm parameters are based on empirical analysis.
            In short, the chunk size for each dimension is selected in a way to make total chunk size in bytes from 8 Kb to 128 Kb maximum;
            if it is impossible, chunk size in bytes must be the greatest possible, but less than 8 Kb.
            </para>
            <para>
            If you need performance tuning, or you have a stretched array which doesn't fit well into square chunks, you should manually set the chunk size.
            To enable it, <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/> implements the <see cref="T:Microsoft.Research.Science.Data.IChunkSizesAdjustable"/> interface.
            </para>
            <para>
            Names. If a variable name is not complied with NetCDF naming rules, 
            its simplified version is used at the NetCDF layer, but through the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> it is still visible
            unmodified.
            </para>
            <para>
            <see cref="T:System.DateTime"/> support. 
            Since the unmanaged NetCDF4 doesn't support a date/time type, it is internally stored 
            as a double variable with special attribute 
            <c>Units = "100-nanosecond intervals that have elapsed since 12:00:00 midnight, January 1, 0001"</c>.
            NetCDF variables with this attribute are loaded as <see cref="T:System.DateTime"/> variables.
            In the current release, any other units descriptions are not considered as a date/time and 
            hence the variable's final type of data is <see cref="T:System.Double"/>.
            </para>
            <example>
            The following example creates an empty <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/> for a new data file:
            <code>
            using (DataSet ds = DataSet.Open("msds:nc?file=example.nc&amp;openMode=create"))
            {
            	// Working with ds . . .
            }
            </code>
            </example>
            <para><see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/> implements interface <see cref="T:Microsoft.Research.Science.Data.IChunkSizesAdjustable"/>, therefore it allows
            a user to choose size explicitly. See remarks for the <see cref="T:Microsoft.Research.Science.Data.IChunkSizesAdjustable"/> fore details.</para>
            <para>There is an issue in the current version of NetCDF library: when defining a variable depending on a new dimension with name
            equal to a name of already existing variable, it fails. The only known solution is first to define the variable with this dimension, and
            then the variable with that dimension's name.</para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.TraceNetCDFDataSet">
            <summary>
            Filters trace messages related to the DataSet.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.#ctor(System.String)">
            <summary>
            Initializes new instance of the NetCDFDataSet class.
            </summary>
            <param name="uri">DataSet URI (see remarks for <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/>).</param>
            <remarks>
            <para>
            If the file specified by <paramref name="fileName"/> exists, the NetCDF will be 
            initialized with that file. Otherwise, the new file will be created and 
            the resulting NetCDFDataSet will be empty.
            </para>
            <para>
            This constructor sets the property <see cref="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.RollbackEnabled"/> to false
            thus allows to work with large scale files.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.#ctor(System.String,Microsoft.Research.Science.Data.ResourceOpenMode)">
            <summary>
            Initializes new instance of the NetCDFDataSet class.
            </summary>
            <param name="uri">DataSet URI (see remarks for <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/>).</param>
            <param name="openMode">The open mode (see 
            <seealso cref="T:Microsoft.Research.Science.Data.ResourceOpenMode"/>).</param>
            <remarks>
            <para>
            This constructor sets the property <see cref="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.RollbackEnabled"/> to false
            thus allows to work with large scale files.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.Open(System.String,System.Boolean)">
            <summary>
            
            </summary>
            <param name="fileName"></param>
            <param name="enableRollback">
            Gets or sets the value indicating if rollback is enabled. If it does, the each transaction will
            lead to copying source file for further possible restoraition. If it doesn't, the rollback will throw
            an exception in case of its invoke. Set it only for data sets having not NetCDF variables.
            </param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.Create(System.String,System.Boolean)">
            <summary>
            
            </summary>
            <param name="fileName"></param>
            <param name="enableRollback">
            Gets or sets the value indicating if rollback is enabled. If it does, the each transaction will
            lead to copying source file for further possible restoraition. If it doesn't, the rollback will throw
            an exception in case of its invoke. Set it only for data sets having not NetCDF variables.
            </param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.CreateVariable``1(System.String,System.String[])">
            <summary>
            
            </summary>
            <typeparam name="DataType"></typeparam>
            <param name="varName"></param>
            <param name="dims"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.OnTransactionOpened">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.OnPrecommitting(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            
            </summary>
            <param name="changes"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.OnPrecommit(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            
            </summary>
            <param name="changes"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.OnCommit">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.OnRollback">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.Dispose(System.Boolean)">
            <summary>
            
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.WriteNetCdfAttribute(System.Int32,System.String,System.Object,Microsoft.Research.Science.Data.NetCDF4.AttributeTypeMap)">
            <summary>
            Writes an attribute of an arbitrary type for a given variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.HandleResult(System.Int32)">
            <summary>
            Handles the result code for NetCDF operations.
            In case of an error throws the NetCDFException exception.
            </summary>
            <exception cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFException"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.SetChunkSizes(System.Int32[])">
            <summary>
            Sets the chunk sizes (in data elements).
            </summary>
            <seealso cref="T:Microsoft.Research.Science.Data.IChunkSizesAdjustable"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet.RollbackEnabled">
            <summary>
            Gets or sets the value indicating if rollback is enabled. If it does, the each transaction will
            lead to copying source file for further possible restoraition. If it doesn't, the rollback will throw
            an exception in case of its invoke. Set it only for data sets having not NetCDF variables.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFException">
            <summary>
            A fault within the unmanaged code of the NetCDF library.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFException.#ctor(System.Int32)">
            <summary>
            
            </summary>
            <param name="resultCode"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFException.#ctor(System.String)">
            <summary>
            
            </summary>
            <param name="message"></param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFException.ResultCode">
            <summary>
            Gets the unmanaged NetCDF result code, describing the fault.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1">
            <summary>
            Provides an access to NetCDF 4.0 variables.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.varid">
            <summary>Variable's id in terms of the NetCDF file.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.dimids">
            <summary>Variable's dimensions ids in terms of the NetCDF file.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.UpdateDimIds">
            <summary>
             Getting dimensions' ids from the NetCDF file.
             </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.GetNetCDFName(System.String)">
            <summary>
            Replaces all illegal for NetCDF name chars with '_';
            null and empty strings become '_'.
            Maximal length: 100 symbols.
            </summary>
            <param name="name"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.OnPrecommit(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            
            </summary>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.ReadShape">
            <summary>
            
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.ReadData(System.Int32[],System.Int32[])">
            <summary>
            
            </summary>
            <param name="origin"></param>
            <param name="shape"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCdfVariable`1.WriteData(System.Int32[],System.Array)">
            <summary>
            
            </summary>
            <param name="origin"></param>
            <param name="a"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri">
            <summary>
            Allows to customize a URI with parameters specific for the <see cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/> provider.
            </summary>
            <seealso cref="M:Microsoft.Research.Science.Data.DataSet.Create(Microsoft.Research.Science.Data.DataSetUri)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri.#ctor(System.String)">
            <summary>
            Instantiates an instance of the class.
            </summary>
            <param name="uri">The DataSet uri.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri.#ctor">
            <summary>
            Instantiates an instance of the class with default parameters.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri.TrimTrailingZero">
            <summary>
            Indicates whether the provider should trim trailing zero (\x00 symbol) when reads attribute values or not.
            Default is false.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri.OpenMode">
            <summary>
            Specifies how the data set should open a file.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri.Deflate">
            <summary>
            Defines the compression level.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri.FileName">
            <summary>
            Specifies the file to open or create.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.NetCDF4.NetCDFUri.EnableRollback">
            <summary>
            Indicates whether the rollback is enabled or not.
            </summary>
            <remarks>
            Indicates whether the rollback is enabled or not. Rollback can happen if commit fails. If it is enabled, each transaction copies source file for further possible restoration. Otherwise, rollback will throw an exception in case of its invoke. Set it for data sets having not only NetCDF variables and consider set it false for very large files. Default is false.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.NetCDF4.DeflateLevel">
            <summary>
            Represents data deflate level for NetCDF variables.
            </summary>
            <seealso cref="T:Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet"/>
        </member>
        <member name="T:Microsoft.Research.Science.Data.IDataSetHosting">
            <summary>
            Represents an object that provides a hosting for a DataSet.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.IDataSetHosting.Uri">
            <summary>
            Gets the URI of the service hosting a DataSet.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.SchemaResponseCcrPort">
            <summary>CCR implementation of <see cref="T:Microsoft.Research.Science.Data.ISchemaResponsePort"/>.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.UpdateResponseCcrPort">
            <summary>
            CCR implementation of <see cref="T:Microsoft.Research.Science.Data.IUpdateResponsePort"/>.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.GetDataResponseCcrPort">
            <summary>
            CCR implementation of <see cref="T:Microsoft.Research.Science.Data.IDataResponsePort"/>.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.GetMultipleDataResponseCcrPort">
            <summary>
            CCR implementation of <see cref="T:Microsoft.Research.Science.Data.IMultipleDataResponsePort"/>.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.NotificationCcrPort">
            <summary>
            CCR implementation of <see cref="T:Microsoft.Research.Science.Data.INotifyPort"/>.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.ResponseCcrPort">
            <summary>
            CCR implementation of <see cref="T:Microsoft.Research.Science.Data.ISchemaResponsePort"/>.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.ProxyDataSetFactory">
            <summary>Base class for all proxy-based DataSet factories. Contains logic for Dispather
            queue management and proxy construction</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.ProxyDataSetFactory.CreateTimeout">
            <summary>Proxy creation timeout</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ProxyDataSetFactory.TryReplaceDispatcher(Microsoft.Ccr.Core.Dispatcher)">
            <summary>
            The method checks whether the dispatcher is specified for the factory or not;
            if not, assigns <paramref name="dispatcher"/> to the factory.
            </summary>
            <param name="disp"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.ProxyDataSetFactory.CreateProxy(Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)">
            <summary>Creates proxy</summary>
            <param name="storagePort">Storage port</param>
            <param name="uri">Uri of dataset to attach. Pass null value to attach to existing DataSet</param>
            <param name="isReadOnly">True to return readonly proxy or false otherwise</param>
            <returns><see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> object</returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ProxyDataSetFactory.Dispatcher">
            <summary>Gets or sets Dispatcher used by constructed proxies.</summary>
            <remarks>This property cannot be null. If no Dispatcher is set explicitly, default
            dispatcher will be created. Dispatcher cannot be replaced: <see cref="T:System.InvalidOperationException"/>
            is thrown if trying to replace Dispatcher property after is has been set either explicitly or
            implicitly.</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.ProxyDataSetFactory.TaskQueue">
            <summary>Gets task queue used by constructed proxies. Default dispatcher will be created 
            if none is speficied before accessing this property.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.ProxyDimensionRange">
            <summary>
            Represents index range for a particular dimension.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.ProxySdsNotifications">
            <summary>
            Set of notification messages for the ProxyDataSet.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.SdsSchemaUpdated">
            <summary>
            The message is used when a data set's schema is updated.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.SdsDataPrepared">
            <summary>
            The message is used when a data set's request for data is completed.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.SdsDataPrepared.DataSet">
            <summary>
            The data set that is initiated data preparation procedure.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.SdsDataPrepared.Responses">
            <summary>
            Responses for each variable from the request.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet">
            <summary>
            Proxy provider for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class.
            </summary>
            <remarks>
            <para>
            The goal of the Service Model presented by the Microsoft.Research.Science.Data.ServiceModel library,
            is to allow an asynchronous remote access to a DataSet from multiple data consumers.
            Service Model introduces an SDS Service and the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"></see> provider.
            </para>
            <para>
            An SDS Service maintains a custom <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and provides a remote access to it
            through the <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> interface port. There is a basic CCR implementation
            of such service as a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> class in the 
            Microsoft.Research.Science.Data.ServiceModel library.
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> is a DataSet provider that attaches to a remote DataSet maintained by an SDS service 
            and enables a transparent remote work with that DataSet.
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> API is identical to other DataSet providers with the exception 
            for its creation protocol. Instead of creating a proxy DataSet from a <see cref="T:Microsoft.Research.Science.Data.DataSetUri"/>, 
            the <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/> static method 
            accepts a reference to the <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> interface and an optional URI 
            to be passed to a remote SDS service. If the URI is not specified, 
            the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> attaches to an existing service DataSet. 
            If the URI is specified, the <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/>
            method passes it to the service. Default service implementation attaches the proxy to this newly created service DataSet with specified URI. 
            Other service implementation may choonse another URI handling strategy.
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> instance, attached to a storage service, behaves like any other DataSet,
            but the following remarks about its peculiarities should be considered.
            </para>
            <para>
            The <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Commit"/> method is a synchronous method that
            first performs local constraints checks, and if they
            succeed, sends the changeset to the storage, waiting for the response. If the storage commit succeeds,
            the changeset is committed locally and the <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Commit"/> finishes.
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> guarantees that if a changeset commit failed at the storage,
            local commit fails, too.
            </para>
            <para>
            If <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> looses a connection to the storage, 
            or the <see cref="!:ProxyDataSet.Dispose()"/> method
            is invoked, the proxy goes into the detached state 
            (that can be determined by the <see cref="P:Microsoft.Research.Science.Data.DataSet.IsDisposed"/> property). 
            Most methods throw <see cref="T:System.ObjectDisposedException"/> exception after the DataSet is disposed.
            </para>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> pretends it has same variables, dimensions, metadata etc. 
            as a remote service data set it is attached to. 
            All requests for getting data, modifying data, changing metadata attributes are translated 
            to the remote data set when the <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Commit"/> method is invoked.
            Other proxies attached to the same service data set see these modifications through the 
            <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event. An argument <see cref="T:Microsoft.Research.Science.Data.DataSetCommittedEventArgs"/> 
            of the event contains description of the commit, including applied changes 
            presented as an instance of the <see cref="T:Microsoft.Research.Science.Data.DataSetChangeset"/> class.
            The <see cref="P:Microsoft.Research.Science.Data.DataSetChangeset.ChangesetSource"/> allows to determine a source of changes.
            </para>
            <para>
            About <see cref="M:Microsoft.Research.Science.Data.Variable.Append(System.Array)"/>. 
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> guarantees that locally appended data is appended to the end of the actual data
            when it is committed at the storage service. Therefore it is impossible to predict real position
            of appended data until it is committed to the storage. So the proposed schema of the DataSet after the Append, 
            (taken via the <see cref="M:Microsoft.Research.Science.Data.DataSet.GetSchema(Microsoft.Research.Science.Data.SchemaVersion)"/> method)
            contains only possible variable shape and affected rectangle,
            those can be updated after commit if another proxy has updated the storage before this proxy.
            Final variable shape and affected rectangle are given in the 
            <see cref="P:Microsoft.Research.Science.Data.DataSetCommittedEventArgs.Changes"/> property of the <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event argument. 
            </para>
            <para>
            About transformed variables (see <see cref="M:Microsoft.Research.Science.Data.DataSet.TransformVariable``2(Microsoft.Research.Science.Data.Variable{``1},System.Func{``1,``0},System.Func{``0,``1},System.String)"/>) 
            in the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>.
            When a transformed variable is added to the proxy, it is added to the local DataSet only, and
            it is not transferred into the storage service and hence is not visible to other users
            of the same storage. Furthermore, all coordinate systems that
            contain at least one axis which is a transformed variable, are committed locally only, too. 
            Therefore, there can be more constraints on data locally than at a storage, and local commit may fail
            even if the storage has committed the changeset.
            </para>
            <para>
            About referenced variables (see <see cref="M:Microsoft.Research.Science.Data.DataSet.AddVariableByReference``1(Microsoft.Research.Science.Data.Variable{``0},System.String[])"/>).
            References variables added to a proxy, are committed only locally, too.
            Nevertheless, it is highly recommended not to use references within a proxy, since this feature for a proxy
            is recently experimental and can work properly in some simple cases only.
            </para>
            <para>
            About <see cref="P:Microsoft.Research.Science.Data.Variable.ID"/> of a proxy variable. 
            Since real IDs of variables, those are added through a proxy API, become known only after 
            the storage commit finishes, 
            and it is also required by the DataSet specification that variables' IDs are constant,
            therefore proxy assigns to variables its own local IDs those are constant during life time of the proxy,
            but can differ from IDs assigned to same variables at the storage.
            </para>
            <para>
            Scenarios.
            <list type="bullet">
            <item>
            <description>
            In a typical scenario a connection is established between a data set service and "data ports" of 
            several computational components (clients).
            </description>
            </item>
            <item>
            <description>
            A client which is a pure data generator then creates a data set proxy by attaching to the default 
            service data set, creates necessary variables, puts all data to the data set, calls <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> 
            method on the way or at the very end, and finally disposes off the proxy data set thus detaching 
            from the service data set.
            </description>
            </item>
            <item>
            <description>
            A client which is a pure data consumer attaches to the data set in 
            the same way, but reads data instead of writing it.
            </description>
            </item>
            <item>
            <description>
            A bit more sophisticated client may subscribe to service notifications and repeat 
            the whole process of creating fresh copy of proxy data set and data consumption 
            each time new data set is created at a service.
            </description>
            </item>
            <item>
            <description>Even more complicated client reacts 
            to the proxy's <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> 
            event, fired when the data set is updated, and recomputes each time another 
            client changes data at a service.
            </description>
            </item>
            </list>
            </para>
            <para>
            Using <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> within CCR threads.
            Since the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> and <see cref="M:Microsoft.Research.Science.Data.Variable.GetData"/> are
            sychronous methods, they use <see cref="M:System.Threading.WaitHandle.WaitOne"></see>
            method to wait until the operation completes. This blocks a thread they are invoked in,
            and since the number of threads managed by the CCR dispatcher is limited, it is 
            possible when several <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/>s and/or <see cref="M:Microsoft.Research.Science.Data.Variable.GetData"/>s
            blocks all available threads, thus performing a deadlock. Therefore it is recommended
            to use within CCR threads their asynchronous analogues: 
            <see cref="M:Microsoft.Research.Science.Data.Proxy.DataSetExtensions.RequestCommit(Microsoft.Research.Science.Data.DataSet)"/> and
            <see cref="!:AsyncVariableExtensions.RequestData(Variable, DispatcherQueue, int[], int[])"/>.
            </para>
            <para>
            Concurrency in a <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>. 
            Both the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class and
            the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> public API are not thread-safe. 
            Therefore, a user of a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> 
            instance must consider this issue and not to 
            permit re-entering of the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> API.
            </para>
            <para>
            There are three reasons causing the event <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> 
            those are possible in the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>. First happens
            when a proxy receives recent changeset from a service, it is attached to.
            Second is just a result of invoking of <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method of the proxy.
            Third happens when a user invokes <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method, but local changes
            are merged with changes applied to the storage by another proxy at the same time. 
            </para>
            <para>
            The event <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> has an argument
            <see cref="T:Microsoft.Research.Science.Data.DataSetCommittedEventArgs"/>,
            containing <see cref="T:Microsoft.Research.Science.Data.DataSetChangeset"/> 
            whose property <see cref="P:Microsoft.Research.Science.Data.DataSetChangeset.ChangesetSource"/>
            allows to determine the actual type of the commit.
            </para>
            <para>
            Handling the <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event.
            There are several true statements:
            <list type="number">
            <item><description>Only one commit procedure can run simultaneously.</description></item>
            <item><description>Only one handler of the event <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> 
            can run simultaneously.</description></item>
            <item><description><see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method finishes after the event handlers of
            <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> finish.</description>
            </item>
            </list>
            It leads to a situation when invoking of the <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method within
            a handler of the <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event
            for the DataSet caused that event, can lead to
            a deadlock, because the first Commit that caused the first Committed handler, waits while
            the second Commit finishes, meanwhile proxy waits while the first commit finishes before it starts
            second commit procedure.
            <example>
            Example of the code that leads to a deadlock.
            <code>
            DataSet proxy = ...;
            proxy.IsAutocommitEnabled = false;
            ...
            proxy.Committed += delegate(object s, Microsoft.Research.Science.Data.DataSetCommittedArgs e)
            	{
            		proxy["v"].Append(new int[] { 1 } );
            		proxy.Commit(); // THIS LINE CAN LEAD TO THE DEADLOCK!
            	};
            </code>
            </example>
            </para>
            <para>
            Nevetherless, it is safe to both read from a DataSet and modify it within a handler of the 
            <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event.
            Instead of <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method, there is its asynchronous analogue, an
            extension method for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class,
            <see cref="M:Microsoft.Research.Science.Data.Proxy.DataSetExtensions.RequestCommit(Microsoft.Research.Science.Data.DataSet)"/> method. It can be safely used even within
            the event handler (but it is still prohibited to invoke <see cref="M:Microsoft.Research.Science.Data.Proxy.DataSetExtensions.RequestCommit(Microsoft.Research.Science.Data.DataSet)"/>
            again until the previous commit finishes).
            <example>
            The following example uses asynchronous commit in a handler of the 
            <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event.
            <code>
            DataSet proxy = ...;
            proxy.IsAutocommitEnabled = false;
            ...
            proxy.Committed += delegate(object s, Microsoft.Research.Science.Data.DataSetCommittedArgs e)
            	{
            		proxy["v"].Append(new int[] { 1 } );
            		proxy.RequestCommit(); // The method returns at once, not waiting until the commit finishes.
            	};
            </code>
            </example>
            </para>
            <para>
            Also note, that there are at least two reasons why the enabled <see cref="P:Microsoft.Research.Science.Data.DataSet.IsAutocommitEnabled"/>
            is not so good to use with a proxy. First is efficiency considerations. And second is 
            possible deadlock. If in the example above the autocommit would be enabled, 
            the synchronous commit would happen right after the <c>Append</c> and before the proper <c>RequestCommit</c> call.
            Do not forget that by default the autocommit is enabled.
            </para>
            <para>
            Modification of a DataSet can also be done in a different user thread. In this case it is 
            allowed using <see cref="M:Microsoft.Research.Science.Data.DataSet.Commit"/> method.
            <example>
            <code> 
            // Creating ProxyDataSet 
            ProxyDataSet dataSet = . . .
            dataSet.IsAutocommitEnabled = false;
            
            ThreadPool.QueueUserWorkItem(
                           dummy =&gt; AddData(dataSet)); // dataSet is a ProxyDataSet
                           
            private void AddData(DataSet dataSet) // invoked in a user thread
            {
            	// Adding new variable to the data set
            	Variable&lt;int&gt; var = dataSet.AddVariable&lt;int&gt;("var","x");
            	dataSet.Commit();
            
            	// Computing data and appending it to the var
                for (int i = 0; i &lt; 500; i++)
                {
                    try
                    {
                        var.Append(new int[] { i }); // Appends the value i to the end of the var
                        dataSet.Commit();	// Synchronously commits the data set
                    }
                    catch (Exception ex)
                    {
            			// handling exception
                        break;
                    }
                }
            }
            dataSet.Committed += delegate(object s, Microsoft.Research.Science.Data.DataSetCommittedArgs e)
            {
            	// It is safe to read anything from the data set:
            	int n = dataSet.Changeset;
            	
            	// It is safe to commit another data set:
            	dataSet2["n"].Append(new int[] { n });
            	dataSet2.Commit();
            };
            </code>
            </example>
            </para>
            <para>
            Mixing modifying of a proxy both in a handler of the <see cref="E:Microsoft.Research.Science.Data.DataSet.Committed"/> event
            and in a different user thread should be done very cautiously with a guarantee of (1) 
            non re-entering for the public DataSet API and (2) synchronization of these changes. 
            It is highly recommended not to use such code.
            </para>	
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSet"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.proxyTimeout">
            <summary>Time-out period for proxy in ms.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.dataSetId">
            <summary>Version of the underlying data set at the storage.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.attachedURI">
            <summary>URI of a data set the proxy is attached to.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.disposing">
            <summary>Indicates that the data set is now disposing.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.portLockProxy">
            <summary>Request to exclusively set the lock field to true.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.portInitiateDisposeProxy">
            <summary>Request to initiate disposing of the proxy.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.portDisposeProxy">
            <summary>Teardown request to dispose the proxy.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.newSchemaPort">
            <summary>
            [input] This port contains messages with the latest schema (i.e. means completion of the async GetLatestSchema operation)
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.storagePort">
            <summary>The port of the SDS-source service attached to the proxy.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.updatesQueue">
            <summary>Port that holds queue of DataSet schema changes</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.updateFirePort">
            <summary>Port that starts OnChangeSetUpdate handler</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.taskQueue">
            <summary>DispatcherQueue to activate inner routines.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.locked">
            <summary>If greater than 0, all updates are queued but not applied.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.storageChangeset">
            <summary>Current storage's changeset.
            <para>The difference between proxy's changeset numbers and storage's may be presented. 
            The problem is that some of local changes might not affect storage 
            (for example, computational variables).</para></summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.commitPort">
            <summary>The port is used to start the exclusive commit of local changes (see <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.ExclusiveCommit(Microsoft.Research.Science.Data.Proxy.CommitRequest)"/>).</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.continueCommitPort">
            <summary>The port is used to handle storage update response exclusively (see <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.ExclusiveCommit2(Microsoft.Research.Science.Data.Proxy.CommitPackage)"/>).</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.localCommittedFinishedPort">
            <summary>Message to this port unblocks Proxy.Commit method.
            If the port is null, no Commit is waiting.
            If the null is sent to the port, the commit has succeeded.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.unlockProxy">
            <summary>
            Exclusively decreases lock counter and checks for another request for Committed event.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.requestsForCommittedEvent">
            <summary>If two requests for Committed event happens simultaneously 
            one of them stored here for later times.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.waitingForChangeset">
            <summary>Minimal changeset number received from the storage that is to be committed.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.localChanges">
            <summary>Stored local changes for the proxy (i.e. done through its API) to restore
            non-proxy variables when the commit is being done.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.idMappingProxyToStorage">
            <summary>Maps proxy variable ID into storage ID.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.idMappingStorageToProxy">
            <summary>Maps storage variable ID into proxy ID.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.sharedTimer">
            <summary>Used for time-outs.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.isSyncEnabled">
            <summary>Determines whether the proxy should synchronize itself with the storage
            or just accumulated changesets.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.notSyncingEvent">
            <summary>
            When syncs starts, the event is reset; when finishes, event is set.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.maxReceivedChangeSet">
            <summary>
            The latest received (and ignored) changest during the changing process of the proxy data set.
            </summary>
            <remarks>
            Commit() is just a method of the ProxyDataSet class so while 
            it is running new changeset can be received from the storage service and the proxy 
            will try to make two commits simultanesously, and that is wrong. 
            So, if the proxy data set has changes it ignores all incoming changesets 
            but remembers their latest number. After it committs (or rolls itself back on a failure) 
            it checks whether its last changeset is less than the latest received. 
            If not, it sends a request for a latest schema.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.csWaitTimeoutTimer">
            <summary>Timer for time out in changeset waiting.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean,Microsoft.Research.Science.Data.Proxy.ProxyCreationPort)">
            <summary>
            Initializes the instance of the ProxyDataSet class.
            </summary>
            <param name="taskQueue">Dispatcher queue for inner routines.</param>
            <param name="storagePort">The port of the target storage.</param>
            <param name="uri">DataSet URI to open in the storage.</param>
            <param name="readOnly">If true, the proxy is read only.</param>
            <param name="resultPort">The port where the result of proxy construction is sent (either instance or fault)</param>
            <remarks>
            <para>If <paramref name="uri"/> is null, the proxy attaches the default data set of the service.</para>
            <para>Users should wait for DataSet reference on the result port before using this DataSet.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort)">
            <summary>
            Initiates creating of an instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> class.
            </summary>
            <returns>
            The port where the result of the proxy constructing is sent (either the instance reference or an exception).
            </returns>
            <param name="taskQueue">Dispatcher queue for inner routines of the proxy.</param>
            <param name="storagePort">The port of the target storage.</param>
            <remarks>
            <para>
            Creates a writable <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>. For default storage service, the proxy is attached to the default DataSet of
            the storage service identified by the <paramref name="storagePort"/>.  
            Other service implementation may choonse another URI handling strategy.
            </para>
            <para>
            See examples in remarks for <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/>.
            </para>
            </remarks>		
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Service.StorageService"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)">
            <summary>
            Initiates creating of an instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> class.
            </summary>
            <returns>
            The port where the result of the proxy constructing is sent (either the instance reference or an exception).
            </returns>
            <param name="taskQueue">Dispatcher queue for inner routines of the proxy.</param>
            <param name="storagePort">The port of the target SDS service.</param>
            <param name="readOnly">The value determining whether the proxy is to be read only or not.</param>
            <param name="uri">DataSet URI to open in the storage. If is null, attaches
            to the existing DataSet.</param>
            <remarks>
            <para>
            If the <paramref name="uri"/> is not null,
            the method passes it to a service presented by the <paramref name="storagePort"/>, that
            opens a DataSet from the <paramref name="uri"/>
            (read about DataSet URIs in remarks for 
            the <see cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/> class).
            Then new <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> instance attaches to the created DataSet.
            </para>
            <para>
            If the <paramref name="uri"/> is null, 
            new instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>. For default storage service, the proxy is attached to the default DataSet of
            the storage service identified by the <paramref name="storagePort"/>.  
            Other service implementation may choonse another URI handling strategy.
            </para>
            <para>
            In either cases the proxy instance creating is performed asynchronously. 
            The method returns a CCR port, and the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> instance 
            arrives at this port upon initialization.
            </para>
            </remarks>
            <example>
            The following example creates new memory data set 
            (<see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"/>)
            and fills it up:
            <code>
            // Creates a storage service for the CCR DispatcherQueue taskQueue:
            StorageService storage = new StorageService(taskQueue);
            
            . . .
            
            // Creates new memory data set at the storage and initializes a proxy instance,
            // attached to the data set:
            ProxyCreationPort port = ProxyDataSet.Create(taskQueue, storage.MainPort, "msds:memory", false);
            
            // Waits for the result:
            Arbiter.Activate(taskQueue,
                  Arbiter.Choice(port,
                  delegate(ProxyDataSet proxy)
                   {
            			// Adding variable "var", depending on "x", and initializing it with an array:
            			Variable&lt;int&gt; var = proxy.AddVariable&lt;int&gt;("var", new int[] { 1, 2, 3 }, "x");
            			
            			// Committing the data set:
            			proxy.Commit();
            			// All proxies attached to the data set (including this one)
            			// fire the DataSet.Committed event describing the changes.
                   }
                   delegate(Exception exc)
                   {
            			// Couldn't create proxy:
            			Trace.WriteLine("Proxy creating failed: " + exc);
                   }));
            </code>
            The next example creates a proxy and attaches it to the current data set, 
            maintained by a storage service:
            <code>
            // Initializes new instance of a ProxyDataSet attaching it to the current data set of the storage
            // (storage always has current data set since it creates "default" memory data set at start up):
            ProxyCreationPort port = ProxyDataSet.Create(taskQueue, storage.MainPort);
            
            // Waites for the result:
            Arbiter.Activate(taskQueue,
                  Arbiter.Choice(port,
                  delegate(ProxyDataSet proxy)
                   {
            			// Printing information about attached data set:
            			Trace.WriteLine("Proxy created for the data set with Guid = " + 
            				proxy.AttachedDataSetGuid + " and URI = " +
            				proxy.AttachedURI);
            			
            			// Printing name and rank for each variable of the data set:
            			foreach(Variable v in proxy.Variables)
            			{
            				Trace.WriteLine(v.Name + " has rank " + v.Rank);
            			}
            			
            			// If there is no need in the proxy any more, it should be disposed.
            			// Dispose() detaches a proxy from a storage.
            			proxy.Dispose();
                   }
                   delegate(Exception exc)
                   {
            			// Couldn't create proxy:
            			Trace.WriteLine("Proxy creating failed: " + exc);
                   }));
            </code>
            </example>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.CreateProxySync(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean,System.Int32)">Creates a <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> instance synchronously.</seealso>
            <seealso cref="T:Microsoft.Research.Science.Data.Service.StorageService"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Factory.DataSetFactory"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.CreateProxySync(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean,System.Int32)">
            <summary>
            Creates the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> instance synchronously.
            </summary>
            <returns>
            The proxy instance.
            </returns>
            <remarks>
            <para>
            The method invokes <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/> method
            and waits until it completes. If it failed or time is out, an exception is thrown.
            </para>
            <para>
            As any other sync method, it shouldn't be used within CCR threads for it can lead to deadlocks.
            Read more in the remarks for the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> class.
            </para>
            </remarks>
            <param name="taskQueue">Dispatcher queue for inner routines.</param>
            <param name="storagePort">The port of the target storage.</param>
            <param name="readOnly">If true, the proxy is read only.</param>
            <param name="uri">DataSet URI to open in the storage. If is null, attaches to the existing DataSet.</param>
            <param name="timeOut">Timeout in ms.</param>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/>
            <exception cref="T:System.TimeoutException"/>
            <exception cref="T:System.Exception"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.RequestCommit">
            <summary>
            Asynchronously commits the data set.
            </summary>
            <remarks>
            It is highly recommended to use the very method to commit data set
            within CCR thread.
            </remarks>		
            <returns>Response port to get notifications about the commit result.</returns>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Commit"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Commit">
            <summary>
            Synchronously commits the proxy data set.
            </summary>
            <remarks>
            <para>
            Performs local check of constraints and, if succeeds, sends 
            the changes to the storage service, waiting for the response.
            After the response is received, applies changes locally and returns.
            If the commit failed, throws an exception.
            </para>
            <para>
            The method is not recommended for use within CCR threads. 
            Use <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.RequestCommit"/> instead.
            </para>
            <para>
            More details and examples are in remarks for the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.RequestCommit"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.ExclusiveCommit(Microsoft.Research.Science.Data.Proxy.CommitRequest)">
            <summary>
            Exclusively performs check of local changes, then sends them
            to the storage. If the server responses with fresher changeset id, 
            initiates wait for that changeset.
            </summary>
            <param name="request"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.ExclusiveCommit2(Microsoft.Research.Science.Data.Proxy.CommitPackage)">
            <summary>
            Exclusively handles storage update response.
            </summary>
            <param name="package"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.FireEventCommitted(Microsoft.Research.Science.Data.DataSetChangeset,Microsoft.Research.Science.Data.DataSetSchema)">
            <summary>
            Overriden method fires the basic event within the thread pool to avoid deadlocks in CCR environment.
            During the handling of the event, the proxy is locked therefore doesn't handle incoming updates.
            </summary>
            <param name="changes"></param>
            <param name="committedSchema"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.CommittedEventInvoker(System.Object)">
            <summary>
            The method is invoked within the thread pool and fires the event DataSet.Committed
            </summary>
            <param name="changes"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.UnlockProxy(Microsoft.Ccr.Core.EmptyValue)">
            <summary>
            Exclusively unlock proxy and check for another request for committed event to be fired.
            </summary>
            <param name="ev"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.UpdateStorage(Microsoft.Research.Science.Data.DataSet.Changes)">
            <summary>
            If the given changes contains something interesting for the storage,
            sends the update message to the storage and returns its response port.
            Otherwise, returns null (which means that these changes are to be committed locally).
            </summary>
            <param name="changes"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.UpdateIDs(Microsoft.Research.Science.Data.Pipeline.DataSetChangesSchema)">
            <summary>
            Converts all variable IDs within the given changes from proxy
            to storage IDs (except for just added variables).
            </summary>
            <param name="remoteChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.FilterChanges(Microsoft.Research.Science.Data.Pipeline.DataSetChangesSchema)">
            <summary>
            Methods leaves only changes that must be transfered to the storage service.
            It excludes:
            	1. Variables those don't implement IProxyVariable
            	2. Coordinate system those have at least one axis that was excluded by reason (1).
            	Coordinate systems are also excluded from varaible's lists containing them.
            </summary>
            <param name="dataSetChanges"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.IsProxyCoordinateSystem(System.String)">
            <summary>
            It is proxy coordinate system if all its axis are proxy variables.
            </summary>
            <param name="csName"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.IsProxyVariable(System.Int32)">
            <summary>
            It is proxy variable, if it implements IProxyVariable interface.
            </summary>
            <param name="varID"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OnSchemaUpdate(Microsoft.Research.Science.Data.Pipeline.DataSetSchema)">
            <summary>
            newSchemaPort handler: means completion of the async get latest schema request
            </summary>
            <param name="schema"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.GetSchemaUpdateSequence(Microsoft.Ccr.Core.Port{Microsoft.Research.Science.Data.Pipeline.UpdateRequest})">
            <summary>Extracts all schema updates of current data set from specified port 
            and places them into linked list</summary>
            <param name="updateQueue">Port with queued update requests</param>
            <returns>LinkedList of schemas</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OnChangeSetUpdate(Microsoft.Ccr.Core.EmptyValue)">
            <summary>
            Handler of the OnSchemaUpdatePort that is called when new change set received.		
            </summary>
            <remarks>
            This method should update the inner schema in accordance with the specified schema of changes.
            It is a handler for the OnSchemaUpdatePort operation.
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.ApplyCustomChangeSet(Microsoft.Research.Science.Data.Pipeline.DataSetChangesSchema)">
            <summary>
            Commits given pipeline changeset into the DataSet as a custom changes (through DataSet.ApplyChanges).
            </summary>
            <param name="schema"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.PrepareCustomChangeset(Microsoft.Research.Science.Data.Pipeline.DataSetChangesSchema)">
            <summary>
            Builds custom DataSet.Changes from the given pipeline DataSet changes schema.
            Doesn't modify anything inside the DataSet and reads its committed schema only.
            </summary>
            <param name="schema"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.BuildLatestChanges(Microsoft.Research.Science.Data.Pipeline.DataSetSchema)">
            <summary>
            Converts pipeline DataSet schema to pipeline DataSet changeset and additionally
            extracts all accumulated consequent changesets from the buffer. 
            Merges all them and returns one "large" changeset.
            </summary>
            <param name="schema"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.ApplyLatestSchema(Microsoft.Research.Science.Data.Pipeline.DataSetSchema)">
            <summary>
            Applies given pipeline schema to the data set.
            </summary>
            <param name="schema"></param>
            <returns>True if applied.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.EmptyBufferUnless(System.Int32)">
            <summary>
            Removes from the buffer changes with changeset LE than the given one.
            </summary>
            <param name="changeSet"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.EnqueueChangeSet(Microsoft.Research.Science.Data.Pipeline.DataSetChangesSchema)">
            <summary>
            Enqueues next changeset and tries to extract largest sequence of changesets if 
            this one is first in the queue.
            If it is, then returns cummulative change set, otherwise null.
            <para>The method depends on enquiringRecentSchema and waitingForChangeset fields.</para>
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.EnqueueChangeSet(System.Collections.Generic.List{Microsoft.Research.Science.Data.Pipeline.DataSetChangesSchema})">
            <summary>
            Enqueues next changeset and tries to extract largest sequence of changesets if 
            this one is first in the queue.
            If it is, then returns cummulative change set, otherwise null.
            <para>The method depends on enquiringRecentSchema and waitingForChangeset fields.</para>
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.CreateVariable``1(System.String,System.String[])">
            <summary>
            Creates proxy variable with given name and dims.
            </summary>
            <typeparam name="DataType"></typeparam>
            <param name="varName"></param>
            <param name="dims"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])">
            <summary>
            Gets data from several variables atomically with a guarantee that the data belong to the same DataSet version.
            </summary>
            <param name="requests">Data requests describing what data is to be returned.</param>
            <returns>All requested data.</returns>
            <remarks>
            <para>
            This method uses blocking synchronization primitives, therefore 
            the <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.RequestMultipleData(Microsoft.Research.Science.Data.AsyncMultipleDataResponseHandler,Microsoft.Research.Science.Data.DataRequest[])"/> should be used from CCR threads.
            </para>
            <para>
            See also remarks for <see cref="M:Microsoft.Research.Science.Data.DataSet.GetMultipleData(Microsoft.Research.Science.Data.DataRequest[])"/>.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.RequestMultipleData(Microsoft.Research.Science.Data.AsyncMultipleDataResponseHandler,Microsoft.Research.Science.Data.DataRequest[])">
            <summary>
            Asynchronous request for multiple data of the proxy. 
            </summary>
            <param name="requests">Data requests describing what data is to be returned.</param>
            <param name="responseHandler">The handler to receive either response of a fault.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Clone">
            <summary>
            Returns new proxy attached to the same storage service.
            </summary>
            <returns>New instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> class.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenShared(System.String)">
            <summary>
            Opens a shared connection to a DataSet for a specified <paramref name="uri"/>.
            </summary>
            <param name="uri">Identifies a dataset to copy and share.</param>
            <returns>An instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>.</returns>
            <remarks>
            <para>
            The method creates a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> instance and
            hosts a dataset from <paramref name="uri"/> in it. Returned instance is a <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>, attached
            to that storage service.</para>
            <para>
            Note that disposing the resulting <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> doesn't dispose the "shadow" non-shared DataSet. 
            For example, if you use this method to open a NetCDF file, the file will be closed by garbage collector and not by the <see cref="M:Microsoft.Research.Science.Data.DataSet.Dispose"/> method.
            If it is a problem, consider use <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenSharedCopy(System.String)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenSharedCopy(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenShared(System.String,Microsoft.Ccr.Core.DispatcherQueue)">
            <summary>
            Opens a shared connection to a DataSet for a specified <paramref name="uri"/>.
            </summary>
            <param name="uri">Identifies a dataset to copy and share.</param>
            <param name="taskQueue">The CCR dispatcher queue to run storage service.</param>
            <returns>An instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>.</returns>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenShared(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenSharedCopy(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenSharedCopy(System.String)">
            <summary>
            Shares a copy of the dataset from given <paramref name="uri"/>.
            </summary>
            <param name="uri">Identifies a dataset to copy and share.</param>
            <returns>An instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>.</returns>
            <remarks>
            <para>
            The method creates a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> instance and
            hosts a copy of a dataset from <paramref name="uri"/> in it. Returned instance is a <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>, attached
            to that storage service.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenSharedCopy(System.String,Microsoft.Ccr.Core.DispatcherQueue)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenShared(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenSharedCopy(System.String,Microsoft.Ccr.Core.DispatcherQueue)">
            <summary>
            Shares a copy of the dataset from given <paramref name="uri"/>.
            </summary>
            <param name="uri">Identifies a dataset to copy and share.</param>
            <param name="taskQueue">The CCR dispatcher queue to run storage service.</param>
            <returns>An instance of the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>.</returns>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenSharedCopy(System.String)"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OpenShared(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.OnDisposing(Microsoft.Ccr.Core.EmptyValue)">
            <summary>
            EXCLUSIVE handler of the portInitiateDisposeProxy port.
            </summary>
            <param name="dummy"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.TeardownDisposeHandler(Microsoft.Ccr.Core.EmptyValue)">
            <summary>
            TEARDOWN handler of the portDisposeProxy port.
            Makes the actual disposing of the proxy instance.
            </summary>
            <param name="dummy"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Dispose(System.Boolean)">
            <summary>
            Disposes an instance of the proxy.
            </summary>
            <remarks>
            <para>
            Proxy disposing is an asynchronous process. The method <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Dispose(System.Boolean)"/>
            sets the "disposing" flag that prevents any other communication with the storage,
            but actual dispose happens in an exclusive context, when all current handlers
            (for example, commit process, firing of the Committed event and so on) are over.
            When disposing actually finishes, the <see cref="E:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Disposed"/> event is fired.
            </para>
            <para>
            <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Dispose(System.Boolean)"/> includes proxy unsubscribing and detaching from the storage service.
            </para>
            </remarks>
            <seealso cref="E:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Disposed"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.AttachedURI">
            <summary>
            Gets the URI of the attached data set.
            </summary>
            <seealso cref="T:Microsoft.Research.Science.Data.DataSetUri"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.AttachedConstructionString">
            <summary>
            Gets the URI of the attached data set.
            </summary>
            <remarks>
            The method is obsolete. Use <see cref="P:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.AttachedURI"/> instead.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.AttachedDataSetGuid">
            <summary>
            Gets the ID of the attached DataSet.
            </summary>
            <remarks>
            The property allows to see to which DataSet the proxy is attached.
            For example, this can be useful to get whether two proxies are 
            attached to the same DataSet or not.
            </remarks>
            <seealso cref="!:Microsoft.Research.Science.Data.DataSetGuid"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.ServicePort">
            <summary>
            Gets the service port this proxy is attached to.
            </summary>
        </member>
        <member name="E:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Disposed">
            <summary>
            Occurs when the proxy is disposed.
            </summary>
            <remarks>
            See remarks for the <see cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Dispose(System.Boolean)"/> method.
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Dispose(System.Boolean)"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.IsSyncEnabled">
            <summary>
            Gets or sets the value indicating whether the proxy should synchonize as changesets come or
            just accumulate them. Setting false blocks until current synchronization is over.
            </summary>
            <remarks>
            <para>
            When sync is disabled, proxy cannot synchronize with the storage, therefore
            an attempt to commit changes to the storage will fail until the synchronization is enabled.
            </para>
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.DataSetExtensions">
            <summary>
            Contains extension methods for the DataSet enabling asynchornous commit operation.
            </summary>
            <seealso cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet">See remarks concerning concurrency.</seealso>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.DataSetExtensions.RequestCommit(Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Asynchronously commits the data set. 
            </summary>
            <param name="dataSet"></param>
            <returns>Port to receive a result of committing.</returns>
            <remarks>
            It is highly recommended to use the very method withing the CCR thread.
            See remarks about conurrency for the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> class.
            </remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.CommitResponsePort">
            <summary>
            The port is used by the <see cref="M:Microsoft.Research.Science.Data.Proxy.DataSetExtensions.RequestCommit(Microsoft.Research.Science.Data.DataSet)"/> method
            to receive notification about commit completion.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.ProxyCreationPort">
            <summary>
            The port notifies about proxy creation.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.ProxyVariable`1">
            <summary>
            Proxy implementation of a Variable.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyVariable`1.OnCommit(Microsoft.Research.Science.Data.Variable.Changes)">
            <summary>
            The method is invoked at the end of the commit phase.
            </summary>
            <remarks>
            See <see cref="M:Microsoft.Research.Science.Data.Variable.OnCommit(Microsoft.Research.Science.Data.Variable.Changes)"/>.
            </remarks>
            <param name="proposedChanges"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyVariable`1.RequestData(System.Int32[],System.Int32[],Microsoft.Research.Science.Data.VariableResponseHandler)">
            <summary>
            Asynchronous request for data of the variable. 
            Loads and caches required range of data and makes a notification.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.ProxyVariable`1.RequestData(System.Int32[],System.Int32[],System.Int32[],Microsoft.Research.Science.Data.VariableResponseHandler)">
            <summary>
            Asynchronous request for data of the variable. 
            Loads and caches required range of data and makes a notification.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.ProxyVariable`1.StorageID">
            <summary>
            Gets the variable ID in the storage.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.RemoteDataSetUri">
            <summary>Provider object representation of URI pointing to remote DataSet</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.RemoteDataSetUri.#ctor(System.String)">
            <summary>To instantiate an instance of the derived class with specified uri</summary>
            <param name="uri">String with dataset uri</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.RemoteDataSetUri.#ctor(System.Type)">
            <summary>To instantiate an instance of the derived class with default parameters.</summary>
            <param name="providerType">Type of provider</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.RemoteDataSetUri.ServiceUri">
            <summary>Gets or sets URI of the storage service containing a DataSet.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.RemoteDataSetUri.ServiceCtorString">
            <summary>Specifies a DataSet URI to be passed to the storage service.
            If it is empty or null, proxy attaches to the DataSet currently in storage
            otherwise, creates new in the storage from this URI.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.Remoting.RemoteStorageService">
            <summary>Hosts storage service available through Remoting using binary serialization
            and IPC channels</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.RemoteStorageService.#ctor(Microsoft.Research.Science.Data.IServicePort,System.String)">
            <summary>Constructs new storage host</summary>
            <param name="storagePort">Port attached to storage</param>
            <param name="uri">Service relative uri</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.RemoteStorageService.Dispose">
            <summary>Disposes storage by disconnecting marhalled object</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.Remoting.RemoteStorageService.Storage">
            <summary>Get IServicePort for wrapped storage</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.Remoting.RemoteStorageService.Stub">
            <summary>Gets object used for remote comminucation</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.Remoting.RemotingDataSetFactory">
            <summary>This class facilitates creation of DataSet proxies communicating with
            storage service using remoting.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.RemotingDataSetFactory.CreateChannel(System.String)">
            <summary>
            Creates a channel for binary transering of objects via IPC.
            The channel is configured to enable remote delegates invocation.</summary>
            <param name="channelName">IPC channel name</param>
            <returns>An instance of the IpcChannel.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.RemotingDataSetFactory.CreateProxy(System.String,System.String,System.Boolean)">
            <summary>Creates proxy connected to the <paramref name="url"/> through Remoting.</summary>
            <param name="serviceURI">Remoting URI of the service.</param>
            <param name="dsURI">URI of the DataSet to be opened in the service.</param>
            <param name="readOnly">True to create read-only proxy or false to create writable one</param>
            <returns><see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.RemotingDataSetFactory.Create(System.String)">
            <summary>Creates proxy from given URI</summary>
            <param name="uri">URI string</param>
            <returns>Proxy DataSet</returns>
            <remarks>
            <para>Mandatory parameter is "uri" which points to storage service. Example of such DataSet uri is
            "msds:remoting?uri=ipc://storage/s0". Remoting communication uses binary serialization
            and IPC channels.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.Remoting.RemotingDataSetUri.ServiceUri">
            <summary>Gets or sets URI of the storage service containing a DataSet.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortRemotingProxy">
            <summary>Proxy for remote StorageService main port</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortRemotingProxy.remotePort">
            <summary>Remote service port. All requests are posted to it</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortRemotingProxy.#ctor(System.String)">
            <summary>Initializes proxy for remote storage service port</summary>
            <param name="url">Full remote object URI, such as ipc://storage/s0</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub">
            <summary>This class marshals ServicePort using Remoting</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.disposed">
            <summary>True, if this port was disposed and false otherwise. This port is 
            linked to remoting infrastructure as long as it is not disposed</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.#ctor(Microsoft.Research.Science.Data.IServicePort)">
            <summary>Constructs service port stub for given service port and uri</summary>
            <param name="servicePort">Service port to marshal using remoting</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.#ctor(Microsoft.Research.Science.Data.IServicePort,System.String)">
            <summary>Constructs service port stub for given service port and uri</summary>
            <param name="servicePort">Service port to marshal using remoting</param>
            <param name="uri">Relative URI of this stub</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.RegisterServerChannel">
            <summary>Registers IPC server channel with unique name</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.Marshal">
            <summary>Makes this object visible from outside using Remoting infrastructure</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.InitializeLifetimeService">
            <summary>Initializes lifetime services so this object will be connected until disposed</summary>
            <returns>Configures lease object</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.Dispose">
            <summary>Marks this object as disposed. 
            Remoting subsystem will disconnect this object in some time</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.Uri">
            <summary>Gets marshal URI of this instance</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.ServerChannelUri">
            <summary>Gets URI of service channel create by <see cref="M:Microsoft.Research.Science.Data.Proxy.Remoting.ServicePortStub.RegisterServerChannel"/></summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Service.DataSetWrapper">
            <summary>
            Enables use of any scientific data set instance as a service's data source.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.DataSetWrapper.dataSet">
            <summary>Target data set that is considered as data source for the service.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.DataSetWrapper.updatePort">
            <summary>The port to send notifications about emerging of new committed schema of the target data set.</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.DataSetWrapper.dataSetId">
            <summary>
            The identity of this source. It is numbered in the storage service.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.DataSetWrapper.#ctor(System.Int32,Microsoft.Research.Science.Data.DataSet,Microsoft.Ccr.Core.Port{Microsoft.Research.Science.Data.Service.DataSetUpdateMessage})">
            <summary>
            Initializes new DataSetWrapper object.
            </summary>
            <param name="identity">The identity of this source.</param>
            <param name="sds">Target data set that is considered as data source for the service.</param>
            <param name="sdsUpdatePort">The port to send notifications about emerging of new committed schema of the target data set.</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Service.DataSetWrapper.DataSetId">
            <summary>
            The identity of the wrapped data set.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Service.DataSetWrapper.LatestChangeset">
            <summary>
            Gets the last committed changeset description.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Service.DataSetWrapper.DataSet">
            <summary>
            Gets target data set that is considered as data source for the service.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Service.DataSetWrapper.PipelineSchema">
            <summary>
            Get the serializable schema of the target data set.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Service.StorageService">
            <summary>
            The CCR-based implementation of an SDS Service.
            </summary>
            <remarks>
            <para>
            The goal of the Service Model presented by the Microsoft.Research.Science.Data.ServiceModel library,
            is to allow an asynchronous remote access to a DataSet from multiple data consumers.
            Service Model introduces an SDS Service and the <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"></see> provider.
            </para>
            <para>
            An SDS Service is a software component that owns one or several DataSets 
            that are accessed solely through a simple asynchronous remotable interface 
            <see cref="T:Microsoft.Research.Science.Data.IServicePort"/>. Each DataSet within a service has its own identity 
            DataSetId which is unique through the lifetime of a service. 
            Consumers specify DataSetId each time they call the <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> interface.
            </para>
            <para>The
            <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> class is the 
            CCR-based implementation of an SDS Service. Its <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> interface implementation
            is available through the <see cref="P:Microsoft.Research.Science.Data.Service.StorageService.MainPort"/> property.
            </para>
            <para>
            One of a service's DataSets is a default DataSet. When a client attaches to a service 
            it actually attaches to and receive DataSetId of a default DataSet. 
            A service keeps reference counters for each DataSet. If reference count decreases to zero 
            the service DataSet is disposed, unless it is a default DataSet. 
            Service constructor automatically creates the simplest 
            <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet">Microsoft.Research.Science.Data.Memory.MemoryDataSet</see> 
            named <c>"$default"</c>
            as the first default DataSet. When <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> fulfills a request to create new <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, 
            the new <see cref="T:Microsoft.Research.Science.Data.DataSet"/> becomes the default one.
            </para>
            <para>
            The <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>
            class is a client-side type providing a transparent remote work with a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
            owned by an SDS Service, in particular a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> instance.
            As already mentioned above, <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>
            interacts with an SDS Service via the <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> interface.
            </para>
            <para>
            See some typical scenarios and examples in a documentation for the 
            <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> class.
            </para>
            </remarks>
            <seealso cref="P:Microsoft.Research.Science.Data.Service.StorageService.MainPort"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Service.StorageService.RequestState(Microsoft.Ccr.Core.Port{Microsoft.Research.Science.Data.Service.DataSetDescription[]})"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.StorageService._state">
            <summary>
            State of the storage
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.StorageService.schemaUpdatePort">
            <summary>
            The port is used by DataSetWrapper to notify the service about the data set update
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.StorageService.subscribers">
            <summary>
            Dictionary that maps a subscription ID to a <see cref="T:Microsoft.Research.Science.Data.INotifyPort"/> of a subscriber.
            </summary>
            <remarks>
            <para>
            Each subscription has a unique ID allowing cleints to unsubscribe. This dictionary
            maps a subscription ID to a subscriber presented by a <see cref="T:Microsoft.Research.Science.Data.INotifyPort"/> instance.
            </para><para>
            Each subscriber gets notifications about updates of all DataSets within the service
            it is subscribed to. A subscriber have to filter notifications depending 
            on the updated DataSet ID, included in the notification message.
            </para>
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.StorageService.dataSets">
            <summary>
            Dictionary of active data sets
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.StorageService.lastIdentity">
            <summary>
            Identity of current (latest) data set - i.e. default data set id
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Creates and starts a storage service.
            </summary>
            <param name="queue">The CCR task queue to run the service routines.</param>
            <param name="dataSet">Initial default <see cref="T:Microsoft.Research.Science.Data.DataSet"/> of the service (<c>null</c> accepted).</param>
            <remarks>
            <para>
            The constructor initializes the service. 
            If the <paramref name="dataSet"/> is not <c>null</c>, it becomes the default
            <see cref="T:Microsoft.Research.Science.Data.DataSet"/> of the service and its initial reference number is <c>1</c>.
            Otherwise, a <see cref="T:Microsoft.Research.Science.Data.Memory.MemoryDataSet"/> is created with the name <c>"$default"</c>
            and becomes the default <see cref="T:Microsoft.Research.Science.Data.DataSet"/> with zero reference number.
            </para>
            <para>
            The constructor also starts the service. Therefore, after the service is constructed
            by this constructor, it has a default <see cref="T:Microsoft.Research.Science.Data.DataSet"/> and is ready to 
            handle messages coming on the <see cref="P:Microsoft.Research.Science.Data.Service.StorageService.MainPort"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Service.StorageService.#ctor(Microsoft.Ccr.Core.DispatcherQueue)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Service.StorageService"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.#ctor(Microsoft.Ccr.Core.DispatcherQueue)">
            <summary>
            Creates a storage service with a <see cref="T:MemoryDataSet"/> as a default <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
            and starts the service.
            </summary>
            <param name="queue">The CCR task queue to run the service routines.</param>
            <remarks>
            <para>
            The constructor creates a <see cref="T:MemoryDataSet"/> as the first default <see cref="T:Microsoft.Research.Science.Data.DataSet"/>
            of the service. Read more about constructing a service in remarks for 
            the <see cref="M:Microsoft.Research.Science.Data.Service.StorageService.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.DataSet)"/>.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.Service.StorageService.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.DataSet)"/>
            <seealso cref="T:Microsoft.Research.Science.Data.Service.StorageService"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.RequestState(Microsoft.Ccr.Core.Port{Microsoft.Research.Science.Data.Service.DataSetDescription[]})">
            <summary>
            Requests service for its state.
            </summary>
            <param name="statePort">Port to receive state.</param>
            <remarks>
            <para>
            The method requests the storage service to response with 
            its state. The state is an array of <see cref="T:Microsoft.Research.Science.Data.Service.DataSetDescription"/>,
            each describing a <see cref="T:Microsoft.Research.Science.Data.DataSet"/>, maintained by the storage.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.RequestStateHandler(Microsoft.Ccr.Core.Port{Microsoft.Research.Science.Data.Service.DataSetDescription[]})">
            <summary>
            Exclusive
            </summary>
            <param name="statePort"></param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.StartService">
            <summary>
            Starts the service.
            </summary>
            <remarks>
            <para>
            Starting includes:
            activation of the service port handlers;
            activation of inner ports handlers.
            </para><para>
            After the method is invoked, the storage service
            can properly handle messages to the service port (<see cref="P:Microsoft.Research.Science.Data.Service.StorageService.MainPort"/>).
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.SchemaUpdatedHandler(Microsoft.Research.Science.Data.Service.DataSetUpdateMessage)">
            <summary>
            DataSetWrapper update notification handler.
            (exclusive)
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.CreateSDS(System.String)">
            <summary>
            Creates a DataSet for the given URI.
            </summary>
            <param name="uri">The DataSet URI.</param>
            <returns>Created DataSet.</returns>
            <remarks>
            <para>
            Base implementation of the method uses 
            the <see cref="M:Microsoft.Research.Science.Data.DataSet.Open(System.String)"/>
            method to create a DataSet.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.StorageService.DataSetReleased(Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Performs required operations on <paramref name="dataSet"/> release.
            </summary>
            <param name="dataSet">The releasing data set.</param>
            <remarks>
            <para>
            The method is invoked when there are no references to the <paramref name="dataSet"/>
            and it is not the current DataSet of the storage.
            So, the data set has to be release.
            </para>
            <para>The base implementation of the method
            invokes <see cref="M:Microsoft.Research.Science.Data.DataSet.Dispose"/> method.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Service.StorageService.MainPort">
            <summary>
            Gets an asynchronous port to interact with the service.
            </summary>
            <remarks>
            <para>
            <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> is an asynchronous interface providing
            a remote access to <see cref="T:Microsoft.Research.Science.Data.DataSet"/>s owned by the service.
            Read more in remarks for the <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> class.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.Service.StorageService"/>
            <seealso cref="M:Microsoft.Research.Science.Data.Proxy.ProxyDataSet.Create(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)"/>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Service.StorageService.TaskQueue">
            <summary>Gets task queue associated with this StorageService</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Service.DataSetDescription">
            <summary>
            Describes a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> maintained by a storage service.
            </summary>
            <remarks>
            The structure is a part of a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/>'s state.
            It can be requested through the <see cref="M:Microsoft.Research.Science.Data.Service.StorageService.RequestState(Microsoft.Ccr.Core.Port{Microsoft.Research.Science.Data.Service.DataSetDescription[]})"/>
            method.
            </remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.DataSetDescription.DataSetId">
            <summary>
            The DataSet ID identifying the DataSet within a storage.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.DataSetDescription.Schema">
            <summary>
            The recent schema of the DataSet.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Service.DataSetDescription.ReferenceCount">
            <summary>
            The number of proxies attached to the DataSet.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Service.DataSetDescription.#ctor(System.Int32,Microsoft.Research.Science.Data.Pipeline.DataSetSchema,System.Int32)">
            <summary>
            Initializes an instance of the class.
            </summary>
            <param name="dataSetId"></param>
            <param name="schema"></param>
            <param name="referenceCount"></param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Utils.SharedTimer">
            <summary>
            Enables a delayed execution of a method specified.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.#ctor">
            <summary>
            Creates an instance of a timer.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.Start">
            <summary>
            Starts serving delayed execution requests.
            </summary>
            <remarks>
            <para>The method can be called several times from different threads.
            First start initiates a background working threads; 
            consequent starts just increase a number of the timer's clients.
            To stop the timer, the same number of <see cref="M:Microsoft.Research.Science.Data.Utils.SharedTimer.Stop"/> method should be called.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.Stop">
            <summary>
            Informs the timer that its client has no need in it any more.
            </summary>
            <returns>True, if the the timer is actually stopped; otherwise, False.</returns>
            <remarks>
            <para>
            The method decreases a number of the timer's clients (see <see cref="M:Microsoft.Research.Science.Data.Utils.SharedTimer.Start"/>).
            If the number becomes equal to zero, a worker thread stops and all pended timers are removed.
            Otherwise, all timers continue to work.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.Stop(System.Object)">
            <summary>
            Informs the timer that its client has no need in it any more.
            </summary>
            <returns>True, if the the timer is actually stopped; otherwise, False.</returns>
            <remarks>
            <para>
            The method decreases a number of the timer's clients (see <see cref="M:Microsoft.Research.Science.Data.Utils.SharedTimer.Start"/>).
            If the number becomes equal to zero, a worker thread stops and all pended timers are removed.
            Otherwise, all timers continue to work.
            </para>
            <para>
            When a source stops the timer, all its tasks are removed.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.SetTimer(System.TimeSpan,Microsoft.Research.Science.Data.Utils.TimerHandler,System.Object)">
            <summary>
            Pends a method to be executed in a specified time interval.
            </summary>
            <param name="delta">The delay before a method execution.</param>
            <param name="handler">The method to execute.</param>
            <param name="state">The value to pass to the method.</param>
            <returns>Returns the ID of the pended task.</returns>
            <remarks>
            <para>
            To cancel the execution, use <see cref="M:Microsoft.Research.Science.Data.Utils.SharedTimer.ResetTimer(System.Int32)"/> method.
            </para>
            <para>
            The timer must be started before pending a method.
            The accuracy of the timer is 1 millisecond.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.SetTimer(System.TimeSpan,Microsoft.Research.Science.Data.Utils.TimerHandler,System.Object,System.Object)">
            <summary>
            Pends a method to be executed in a specified time interval.
            </summary>
            <param name="delta">The delay before a method execution.</param>
            <param name="handler">The method to execute.</param>
            <param name="state">The value to pass to the method.</param>
            <param name="source">Source of task.</param>
            <returns>Returns the ID of the pended task.</returns>
            <remarks>
            <para>
            To cancel the execution, use <see cref="M:Microsoft.Research.Science.Data.Utils.SharedTimer.ResetTimer(System.Int32)"/> method.
            </para>
            <para>
            The timer must be started before pending a method.
            The accuracy of the timer is 1 millisecond.
            </para>
            <para>
            When a source stops the timer, all its tasks are removed.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.ResetTimer(System.Int32)">
            <summary>
            Cancels the execution pended with given ID.
            </summary>
            <param name="id">ID returned by the <see cref="M:Microsoft.Research.Science.Data.Utils.SharedTimer.SetTimer(System.TimeSpan,Microsoft.Research.Science.Data.Utils.TimerHandler,System.Object)"/> call.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utils.SharedTimer.ToString">
            <summary>
            Gets the string describing a state of the timer.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Utils.SharedTimer.IsStarted">
            <summary>
            Gets the value indicating whether the timer is started.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.IClientPort">
            <summary>This is callback interface. Storage service clients implement
            this interface to receive notifications from storage</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.Config">
            <summary>Provides various configuration settings for WCF</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.Config.MaxDefaultDataMessageSize">
            <summary>Maximum data message size for default bindings</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.Config.MaxDefaultControlMessageSize">
            <summary>Maximum control message size for default bindings</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.GetExtendedQuotas">
            <summary>Creates object holding extended reader quotas.</summary>
            <returns>Quotas extended approximately to 1MB</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.ExtendQuotasForNetNamedPipes(System.ServiceModel.NetNamedPipeBinding)">
            <summary>Extends possible message size for named pipe binding</summary>
            <param name="binding">Binding to extend</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.ExtendQuotasForNetTcp(System.ServiceModel.NetTcpBinding)">
            <summary>Extends possible message size for named pipe binding</summary>
            <param name="binding">Binding to extend</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.ExtendQuotas(System.ServiceModel.Channels.Binding)">
            <summary>Extend possible message size for generic binding if possible</summary>
            <param name="binding">Binding to extend</param>
            <remarks>Now only net named pipe binding is supported</remarks>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.Config.ServiceTrace">
            <summary>Switch to control amount of server-side tracing</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.Config.ClientTrace">
            <summary>Switch to control amount of client-side tracing</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.ServiceLog(System.Diagnostics.TraceLevel,System.String,System.Object[])">
            <summary>Prints diagnostic trace according to service-side settings</summary>
            <param name="level">Trace level for this message</param>
            <param name="fmt">Format string</param>
            <param name="args">Optional arguments</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.ClientLog(System.Diagnostics.TraceLevel,System.String,System.Object[])">
            <summary>Prints diagnostic trace according to client-side settings</summary>
            <param name="level">Trace level for this message</param>
            <param name="fmt">Format string</param>
            <param name="args">Optional arguments</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.TryCreateBindingFromConfig(System.String)">
            <summary>Searches configuration file for named binding</summary>
            <param name="name">Name of binding</param>
            <returns>Configured WCF binding object or null if no binding exists</returns>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.Config.clientEndpointNames">
            <summary>Names of endpoints found in configuration file</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.GetClientEndpointNames">
            <summary>Retrieves names of all client endpoints from config file</summary>
            <returns>Array of string with endpoint names</returns>
            <remarks>This methods access configuration data only on first invocation.
            It stores result in internal variable and returns it on subsequent invocations
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.CreateBindingFromConfig(System.String)">
            <summary>Searches configuration file for named binding</summary>
            <param name="name">Name of binding</param>
            <returns>Configured WCF binding object</returns>
            <exception cref="T:System.Exception">No binding with given name exists in configuration file</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.GetDefaultBindings(System.String)">
            <summary>Returns pair of default bindings for specified protocol</summary>
            <param name="schema">Protocol name from URI Schema (e.g. "net.pipe" or "net.tcp")</param>
            <returns>Pair of bindings for contron and data connections or null for unsupported protocol</returns>
            <remarks>Named pipes (net.pipe) and TCP (net.tcp) bindings are supported by default.
            For other bindings you need to add bindings named sds.control.&lt;protocol&gt; and
            sds.data.&lt;protocol&gt; to application configuration file.
            </remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.Config.DefaultControlBinding">
            <summary>Returns default binding for control connection. This is
            named pipe binding with quotas extended to 16MB</summary>
            <remarks>It is possible to set binding parameters from config. You'll
            need to create custom net named pipe binding named "sdsDefaultControlBinding"</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.Config.DefaultDataBinding">
            <summary>Returns default binding for control connection. This is
            named pipe binding in streaming mode</summary>
            <remarks>It is possible to set binding parameters from config. You'll
            need to create custom net named pipe binding named "sdsDefaultDataBinding"</remarks>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.BindingPair">
            <summary>Represent pair of Control and Data binding for SDS over WCF</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.BindingPair.#ctor(System.ServiceModel.Channels.Binding,System.ServiceModel.Channels.Binding)">
            <summary>Constructs pair of WCF bindings</summary>
            <param name="control">Binding for control messages</param>
            <param name="data">Binding for data transfer</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.BindingPair.Control">
            <summary>Gets binding for control messages</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.BindingPair.Data">
            <summary>Gets binding for data transfer</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.ControlPortProxy">
            <summary>WCF Client part for ServicePortStub.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.ControlPortProxy.#ctor(System.ServiceModel.InstanceContext,System.String,System.ServiceModel.EndpointAddress)">
            <summary>Constructs client for accessing remote service port</summary>
            <param name="callbackInstance">Context for handling server notifications</param>
            <param name="endpointConfigurationName">Name of configured endpoint in config</param>
            <param name="remoteAddress">Address of remote service</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.ControlPortProxy.#ctor(System.ServiceModel.InstanceContext,System.ServiceModel.Channels.Binding,System.ServiceModel.EndpointAddress)">
            <summary>Constructs client for accessing remote service port</summary>
            <param name="callbackInstance">Context for handling server notifications</param>
            <param name="binding">WCF binding object</param>
            <param name="remoteAddress">Address of remote service</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.DataPortProxy">
            <summary>WCF Client part for ServicePortStub.</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.IServiceDataPort">
            <summary>This is interface for Data endpoint of WCF storage service implementation.
            This interface is optimized for Streamed transfer mode</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.DataPortProxy.#ctor(System.String,System.ServiceModel.EndpointAddress)">
            <summary>Constructs client for accessing remote service port</summary>
            <param name="endpointConfigurationName">Name of configured endpoint in config</param>
            <param name="remoteAddress">Address of remote service</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.DataPortProxy.#ctor(System.ServiceModel.Channels.Binding,System.ServiceModel.EndpointAddress)">
            <summary>Constructs client for accessing remote service port</summary>
            <param name="binding">WCF binding object</param>
            <param name="remoteAddress">Address of remote service</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort">
            <summary>This is interface for Control endpoint of WCF storage service implementation</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort.Subscribe(System.Int32)">
            <summary>Subscribes to create and update notifications</summary>
            <param name="subscriptionId">ID to return with notifications</param>
            <returns>Subscriber id. Returned number is used in <see cref="M:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort.Unsubscribe(System.Int32)"/>
            method.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort.Unsubscribe(System.Int32)">
            <summary>Unsubscribes from create and update notifications</summary>
            <param name="subscriptionId">ID of subscriber. This ID is returned
            by <see cref="M:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort.Subscribe(System.Int32)"/> method.</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort.Attach(System.String)">
            <summary>Attaches new dataset to storage service</summary>
            <param name="constructionString">Construction string for dataset</param>
            <returns>ID of attached dataset</returns>
            <remarks>Construction string is used on service side.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort.Detach(System.Int32)">
            <summary>Detaches dataset with specified ID. When reference count of 
            dataset reaches zero dataset will be released</summary>
            <param name="dataSetId">ID of dataset returned by <see cref="M:Microsoft.Research.Science.Data.Proxy.WCF.IServiceControlPort.Attach(System.String)"/> method</param>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.ServicePortProxy">
            <summary>Implements <see cref="T:Microsoft.Research.Science.Data.IServicePort"/> of remote service</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.ServicePortProxy.interleave">
            <summary>This object will perform actions in thread pool but in interleaved mode</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.Subscription">
            <summary>Structure that holds helper information about subscription</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.Subscription.id">
            <summary>ID of subscription from wrapped service port</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.Subscription.shutdownPort">
            <summary>Port to stop interleave associated with subscription</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.Client">
            <summary>Information about one session or client (they are the same)</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.Client.AttachedDataSetIds">
            <summary>Ids of attached datasets for this session (client)</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.Client.SubscriptionShutdownPorts">
            <summary>Interleave shutdown ports</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.ServicePort.servicePort">
            <summary>Storage service exposed by WFC</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.ServicePort.clients">
            <summary>Dictionary that maps SessionId to client state</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Proxy.WCF.ServicePort.subscriptions">
            <summary>Dictionary that maps subscriberId to their shutdown ports</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.ServicePort.CleanupClient(Microsoft.Research.Science.Data.Proxy.WCF.Client)">
            <summary>Cleans up client connection by detaching all its DataSets in inner storage</summary>
            <param name="client">Client to clean up</param>
            <remarks>This method can be called from arbitrary thread</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.ServicePort.CurrentClientPort">
            <summary>Gets response port interface</summary>
            <remarks>This property can be accessed only from the same thread that processes request</remarks>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.ServicePort.ClientCount">
            <summary>Gets count of currently connected clients</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost">
            <summary>Provides hosting for storage services using WCF.</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.Uri,System.ServiceModel.Channels.Binding,System.Uri,System.ServiceModel.Channels.Binding)">
            <summary>Initializes instance of storage host</summary>
            <param name="taskQueue">Task queue to handle concurrent tasks</param>
            <param name="storagePort">Storage port</param>
            <param name="controlAddress">Address of endpoint to receive control messages</param>
            <param name="controlBinding">WCF binding for control messages</param>
            <param name="dataAddress">Address of endpoint to send or received data</param>
            <param name="dataBinding">WCF binding to data transfer</param>
            <remarks>Bindings can be configured programmatically or loaded by name
            from configuration files. For details <see cref="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.CreateBindingFromConfig(System.String)"/></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.Uri,System.ServiceModel.Channels.Binding,System.ServiceModel.Channels.Binding)">
            <summary>Initializes instance of storage host</summary>
            <param name="taskQueue">Task queue to handle concurrent tasks</param>
            <param name="storagePort">Storage port</param>
            <param name="baseAddress">Base address of storage service. No actual endpoint is
            created at this URI. Endpoints are created at "lt;baseAddress&gt;/control" and
            "&lt;baseAddress&gt;/data. It is recommended that base address URI ends with "/"</param>
            <param name="controlBinding">WCF binding for control messages</param>
            <param name="dataBinding">WCF binding to data transfer</param>
            <remarks>Bindings can be configured programmatically or loaded by name
            from configuration files. For details <see cref="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.CreateBindingFromConfig(System.String)"/></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.Uri)">
            <summary>Initializes instance of storage host using named pipe binding with extended quotas
            and Streamed mode for data endpoint</summary>
            <param name="taskQueue">Task queue to handle concurrent tasks</param>
            <param name="storagePort">Storage port</param>
            <param name="address">Base address of storage service. No actual endpoint 
            is created at this URI. Endpoints are created at 
            "lt;baseAddress&gt;/control" and "&lt;baseAddress&gt;/data. 
            It is recommended that base address URI ends with "/"</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.String)">
            <summary>Initializes instance of storage host using named pipe binding with extended quotas</summary>
            <param name="taskQueue">Task queue to handle concurrent tasks</param>
            <param name="storagePort">Storage port</param>
            <param name="suffix">Suffix to append to base endpoint uri.</param>
            <remarks>
            Full names of endpoint URIs 
            will be <c>net.pipe://localhost/microsoft/research/science/data/StorageService/suffix/control</c>
            and <c>net.pipe://localhost/microsoft/research/science/data/StorageService/suffix/data</c>. 
            URIs can be retrieved using <see cref="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.BaseUri"/>, <see cref="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.DataUri"/> and 
            <see cref="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.ControlUri"/> properties.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort)">
            <summary>Initializes instance of storage host using named pipe binding with extended quotas
            and unique endpoint names. Data endpoint uses Streamed mode for message transfer</summary>
            <param name="taskQueue">Task queue to handle concurrent tasks</param>
            <param name="storagePort">Storage port</param>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.#ctor(Microsoft.Ccr.Core.DispatcherQueue,Microsoft.Research.Science.Data.IServicePort,System.Boolean)">
            <summary>Initializes instance of storage host by default</summary>
            <param name="taskQueue">Task queue to handle concurrent tasks</param>
            <param name="storagePort">Storage port</param>
            <param name="defaultEndPoints">True to create endpoints with unique name and named pipe binding
            with extended quotas or False to use service element from config file</param>
            <remarks>Name of endpoints will be <c>net.pipe://localhost/microsoft/research/science/data/StorageService/GUID/control</c> and
            <c>net.pipe://localhost/microsoft/research/science/data/StorageService/GUID/data</c>.
            They can be retrieved using<see cref="T:System.Uri"/> property.</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.Stop">
            <summary>
            Stops the service host.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.Dispose">
            <summary>
            Stops the service host.
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.Storage">
            <summary>Gets the port of the host storage service.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.DataUri">
            <summary>Gets the data URI of the WCF service.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.ControlUri">
            <summary>Gets the URI for control endpoint</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.BaseUri">
            <summary>Gets base part of storage service URI</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.DataBinding">
            <summary>Gets the data transfer binding of the WCF service.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.ControlBinding">
            <summary>Gets binding for control messages</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost.ClientCount">
            <summary>Gets count of currently connected clients</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetFactory">
            <summary>This class facilitates creating of WCF DataSet proxies</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetFactory.GetRemoteServicePort(System.String,System.ServiceModel.Channels.Binding,System.ServiceModel.Channels.Binding)">
            <summary>Constructs proxy port for remote service</summary>
            <param name="url">Service base url</param>
            <param name="controlBinding">WCF binding to use for control messages</param>
            <param name="dataBinding">WCF binding to use for data transfer</param>
            <returns>Object for remote port communication which implements IServicePort</returns>
            <remarks><see cref="!:url"/>parameter is not URL of real enpoint. Instead two
            endpoints must exist on server side: &lt;url&gt;/control and &lt;url;&gt;/data</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetFactory.GetRemoteServicePort(System.String,System.String,System.String)">
            <summary>Constructs proxy port for remote service</summary>
            <param name="url">Service base url</param>
            <param name="controlEndpointConfigName">Name of endpoint for control messages. 
            This name should be defined in configuration file</param>
            <param name="dataEndpointConfigName">Name of endpoint for data transfer.
            This name should be defined in configurarion file</param>
            <returns>Object for remote port communication which implements IServicePort</returns>
            <remarks><see cref="!:url"/>parameter is not URL of real enpoint. Instead two
            endpoints must exist on server side: &lt;url&gt;/control and &lt;url;&gt;/data</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetFactory.CreateProxy(System.String,System.ServiceModel.Channels.Binding,System.ServiceModel.Channels.Binding,System.String,System.Boolean)">
            <summary>Constructs <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> connected to the service through WCF.</summary>
            <param name="serviceURI">Base url of remote storage service</param>
            <param name="controlBinding">WCF binding to use for control messages</param>
            <param name="dataBinding">WCF binding to use for data transfer</param>
            <param name="dsURI">DataSet URI to open in the storage service</param>
            <param name="readOnly">Read-only flag for proxy DataSet</param>
            <returns>Proxy object for DataSet</returns>
            <remarks><see cref="!:serviceURI"/>parameter is not URL of real enpoint. Instead two
            endpoints must exist on server side: &lt;url&gt;/control and &lt;url;&gt;/data</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetFactory.CreateProxy(System.String,System.String,System.String,System.String,System.Boolean)">
            <summary>Constructs <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> connected to the service through WCF.</summary>
            <param name="serviceURI">Base url of remote storage service</param>
            <param name="controlEndpointConfigName">Name of endpoint for control messages. 
            This name should be defined in configuration file</param>
            <param name="dataEndpointConfigName">Name of endpoint for data transfer.
            This name should be defined in configurarion file</param>
            <param name="dsURI">DataSet URI to open in the storage service</param>
            <param name="readOnly">Read-only flag for proxy DataSet</param>
            <returns>Proxy object for DataSet</returns>
            <remarks><see cref="!:serviceURI"/>parameter is not URL of real enpoint. Instead two
            endpoints must exist on server side: &lt;url&gt;/control and &lt;url;&gt;/data</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetFactory.Create(System.String)">
            <summary>Creates proxy from given URI</summary>
            <param name="uri">URI string</param>
            <returns>Proxy DataSet</returns>
            <remarks>
            <para>Mandatory parameter is "uri" which specifies base uri for data and control services. 
            Example of such DataSet uri is "msds:wcf?uri=net.pipe://wcfstorage/s0". Please note that no
            real endpoint is located at this uri. Instead two endpoints with URIs "net.pipe://wcfstorage/s0/control"
            and "net.pipe://wcfstorage/s0/data" are used. Proxies with URIs containing only uri parameters will use
            named pipe WCF binding with extended XML reader quotas.
            It is possible to set binding parameters from config. You'll
            need to create custom net named pipe binding named "sdsDefaultControlBinding"
            </para>
            <para>Optional parameters are "controlBinding", "dataBinding", "controlEndpoint" and 
            "dataEndpoint". They are paired and mutually exclusive. Only both bindings or both
            endpoints can can appear in uri.</para>
            <para>Value of "controlBinding" or "dataBinding" parameter is a name of WCF
            binding in config file. DataSet URI "msds:wcf?uri=net.tcp://127.0.0.1:45000/storage&amp;controlBinding=tcpBinding&amp;dataBinding=tcpBinding"
            will use TCP/IP binding configured as shown below. Please note that data binding needs 
            to be configured for large message sizes or use Streamed transfer mode</para>
            <code>
            &lt;configuration&gt;
             &lt;system.serviceModel&gt;
               &lt;bindings&gt;
                 &lt;netTcpBinding&gt;
                   &lt;binding name="tcpBinding"
                      maxBufferSize="67108864"
                      maxReceivedMessageSize="67108864"
                      maxBufferPoolSize="67108864"&gt;
                      &lt;security mode="None"/&gt;
                      &lt;readerQuotas maxArrayLength="67108864" 
                          maxBytesPerRead="67108864" 
                          maxStringContentLength="67108864"/&gt;
                      &lt;reliableSession enabled="true" 
                          ordered="true" 
                          inactivityTimeout="00:20:00" /&gt;
                    &lt;/binding&gt;
                  &lt;/netTcpBinding&gt;
                &lt;/bindings&gt;
              &lt;/system.serviceModel&gt;
            &lt;/configuration&gt;
            </code>
            <para>Value of "controlEndpoint" or "dataEndpoint" parameter is a name of 
            endpoint in config file. DataSet URI "msds:wcf?uri=net.tcp://127.0.0.1:45000/storage&amp;dataEndpoint=tcpEP&amp;controlEndpoint=tcpEP"
            will use TCP endpoint configured as shown below. Please note that data endpoint needs 
            to be configured for large message sizes or use Streamed transfer mode.</para>
            <code>
            &lt;configuration&gt;
             &lt;system.serviceModel&gt;
               &lt;client&gt;
                 &lt;endpoint name="tcpEP"
                   contract="Microsoft.Research.Science.Data.Proxy.WCF.IServicePortStub"
                   binding="netTcpBinding"
                &lt;/client&gt;
              &lt;/system.serviceModel&gt;
            &lt;/configuration&gt;
            </code>
            <para>In order to use custom binding storage service should be also configured to
            use the same binding. You can do it via appropriate constructor of 
            <see cref="T:Microsoft.Research.Science.Data.Proxy.WCF.StorageServiceHost"/> or refer to WCFStorageService sample.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.Verify">
            <summary>Verifies additional URI parameters</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.ServiceUri">
            <summary>Gets or sets URI of the storage service containing a DataSet.</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.DataSetUri">
            <summary>Gets or sets URI of data set to be opened in remote storage. Return null if 
            dsUri is not specified</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.DataBindingName">
            <summary>Gets or sets data binding name</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.ControlBindingName">
            <summary>Gets or sets control binding name</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.HasBindingNames">
            <summary>Returns true if both binding names are specified in URI</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.DataEndpointName">
            <summary>Gets or sets data endpoint name</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.ControlEndpointName">
            <summary>Gets or sets control endpoint name</summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetUri.HasEndpointNames">
            <summary>Returns true if both endpoint names are specified in uri</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.ArrayHelper.IsOrdered(System.Array)">
            <summary>
            Determines the order of the array.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.ArrayHelper.IsOrdered``1(``0[])">
            <summary>
            Determines the order of the array.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.ArrayHelper.GetOrder(System.Array)">
            <summary>
            <para>Positive: ascend</para>
            <para>Negative: descend</para>
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.ArrayHelper.GetOrder``1(``0[])">
            <summary>
            <para>Positive: ascend</para>
            <para>Negative: descend</para>
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.ReplicationTarget.targetDataSet">
            <summary>Weak reference to replica DataSet</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.ReplicationTarget.targetVars">
            <summary>Maps source variable ID to target (replica) variable ID</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.ReplicationTarget.GetReplicaVarID(System.Int32)">
            <summary>
            Gets the ID of the replicated variable that corresponds given source variable.
            </summary>
            <param name="sourceVarID"></param>
            <returns></returns>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Utilities.ReplicationTarget.Target">
            <summary>Gets target DataSet for replication or null if
            target was disposed or garbage collected</summary>
        </member>
        <!-- Badly formed XML comment ignored for member "F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.wpfDispatcher" -->
        <member name="F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.replicas">
            <summary>Replication targets</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.source">
            <summary>Replication source</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.activeRequests">
            <summary>Data request that are under way right now</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.changesToApply">
            <summary>Metadata changes that will be applied when request finishes</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.pendingRequests">
            <summary>Requests waiting to be posted</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.entireDataRequests">
            <summary>List of variable IDs to request entire data array</summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.syncEnqueued">
            <summary>True if there is request to call Sync in Dispatcher thread or false otherwise</summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.CreateReplica(Microsoft.Research.Science.Data.Variable[])">
            <summary>Creates data set with replicas of specified variables</summary>
            <param name="v">Variables from source data set to replicate</param>
            <returns>New data set with replicated variables</returns>
            <remarks>This method is not threadsafe and should be called from Dispatcher thread</remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.GetReplicaVariable(Microsoft.Research.Science.Data.DataSet,System.Int32)">
            <summary>
            Gets the the replicated variable that corresponds given source variable.
            </summary>
            <param name="replica">Replicated DataSet.</param>
            <param name="sourceVarID">ID of the source variable.</param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.OnDataSetCommittedAsync(System.Object,Microsoft.Research.Science.Data.DataSetCommittedEventArgs)">
            <summary>This method is called when source DataSet is committed. It may be called
            in thread different from UI</summary>
            <param name="sender">DataSet that was committed</param>
            <param name="args">Information about DataSet changes</param>
        </member>
        <member name="P:Microsoft.Research.Science.Data.Utilities.DataSetReplicator.Source">
            <summary>
            Gets the DataSet that is a source for the replicator.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Utilities.PointSetEnumerator">
            <summary>Enumerates table of three variables on one dimension. Converts
            each three values to array of three doubles. Triples with missing values
            or NaN are ignored</summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.DataSetEditorExtensions">
            <summary>
            Contains extension methods for the <see cref="T:Microsoft.Research.Science.Data.DataSet"/> class that allow to run Excel with DataSetEditor addin installed and attach it to a given DataSet instance.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetEditorExtensions.SpawnEditor(Microsoft.Research.Science.Data.IServicePort,System.Boolean)">
            <summary>Connects to the Excel DataSet Editor add-in and opens new workbook for given service port.</summary>
            <param name="port">Service port to open workbook for</param>
            <param name="connectToService">True to connect workbook to storage service port. If new data set is attached to storage service, it could be opened
            from addin UI. False to connect workbook to service that is on top of storage service at the moment of method invocation</param>
            <returns>True if successfull or false otherwise. Extended error information is available in trace output. 'SpawnEditor' switch
            controls amount of information.</returns>
            <remarks>
            <para>Method returns immediately but application process will not exit until corresponding workbook is closed.
            </para>
            <para>
            If a process, that owns the service port, crashes without disposing a host of the port, an attached Excel process can remain in memory after the application is closed.
            In this case next attempt to spawn the Excel will fail; to avoid it, manually kill the ghost Excel.exe process.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetEditorExtensions.SpawnEditor(Microsoft.Research.Science.Data.DataSet)">
            <summary>Opens shared DataSet in the Excel DataSet Editor add-in.</summary>
            <param name="ds">Shared dataset instance.</param>
            <returns>True of add-in was succesfully launched or false if some error occurs or <paramref name="ds"/> is not shared. To get extended 
            information about errors please use 'SpawnExcel' trace switch. </returns>
            <remarks>
            <para>
            Application will wait until the workbook with the dataset is closed.
            </para>
            <para>
            If a process, that owns the dataset, crashes without disposing the dataset, an attached Excel process can remain in memory after the application is closed.
            In this case next attempt to spawn the Excel will fail; to avoid it, manually kill the ghost Excel.exe process.
            </para>
            </remarks>
            <seealso cref="T:Microsoft.Research.Science.Data.SharedDataSet"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.DataSetEditorExtensions.SpawnEditor(System.String,System.String,System.Boolean)">
            <summary>Connects to the Excel DataSet Editor add-in and opens given uri</summary>
            <param name="uri">DataSet uri or storage service uri. Add-in will use current directory set for Excel application so it is recommended
            to use full path names for files.</param>
            <param name="workbookID">ID that is assigned to new workbook. If id is null or empty new unique ID is generated</param>
            <param name="isServiceUri">True if <paramref name="uri"/> is storage service uri or false if <paramref name="uri"/> is DataSet uri</param>
            <returns>True if uri is opened in add-in or false otherwise. Extended error information is available in trace output. 'SpawnEditor' switch
            controls amount of information.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.IntBox.Subtract(Microsoft.Research.Science.Data.Utilities.IntBox)">
            <summary>Subtracts argument from this box</summary>
            <param name="second">Box to be subtracted</param>
            <returns>Sequence of boxes resulting from subtraction</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMin``1(System.Collections.Generic.Dictionary{System.String,System.Object},``0)">
            <summary>
            Gets the value of the attribute with name "min" if it is presented;
            otherwise returns <paramref name="default"/>.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMax``1(System.Collections.Generic.Dictionary{System.String,System.Object},``0)">
            <summary>
            Gets the value of the attribute with name "min" if it is presented;
            otherwise returns <paramref name="default"/>.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMin(System.Collections.Generic.Dictionary{System.String,System.Object})">
            <summary>
            Gets the value of the attribute with name "min" if it is presented;
            otherwise returns null.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMax(System.Collections.Generic.Dictionary{System.String,System.Object})">
            <summary>
            Gets the value of the attribute with name "max" if it is presented;
            otherwise returns null.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMin``1(Microsoft.Research.Science.Data.MetadataDictionary,``0)">
            <summary>
            Gets the value of the attribute with name "min" if it is presented;
            otherwise returns <paramref name="default"/>.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMax``1(Microsoft.Research.Science.Data.MetadataDictionary,``0)">
            <summary>
            Gets the value of the attribute with name "min" if it is presented;
            otherwise returns <paramref name="default"/>.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMin(Microsoft.Research.Science.Data.MetadataDictionary)">
            <summary>
            Gets the value of the attribute with name "min" if it is presented;
            otherwise returns null.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetMax(Microsoft.Research.Science.Data.MetadataDictionary)">
            <summary>
            Gets the value of the attribute with name "max" if it is presented;
            otherwise returns null.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="metadata"></param>
            <param name="default"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetDisplayName(Microsoft.Research.Science.Data.MetadataDictionary)">
            <summary>
            Returns the display name from the metadata, if exists.
            Otherwise, returns the name of the variable.
            If there is no name, returns empty string.
            </summary>
            <param name="metadata"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.GetUnits(Microsoft.Research.Science.Data.MetadataDictionary)">
            <summary>
            Gets the value of "units" attribute, if exists; otherwise, returns null.
            </summary>
            <param name="metadata"></param>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.Utilities.MetadataExtensions.IsCoordinateAxis(Microsoft.Research.Science.Data.Variable)">
            <summary>
            Checks whether the variable is a coordinate axis or not.
            </summary>
            <param name="var"></param>
            <returns></returns>
        </member>
        <member name="T:Microsoft.Research.Science.Data.OpenDataSetDialog">
            <summary>
            Prompts the user to open a DataSet.
            </summary>
            <summary>
            OpenDataSetDialog
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OpenDataSetDialog.PromptOpenDataSet">
            <summary>
            Prompts a user to open a DataSet.
            </summary>
            <returns>If succeeds, returns constructed DataSet; otherwise, returns null.</returns>
            <remarks>
            <para>
            The method shows the dialog <see cref="T:Microsoft.Research.Science.Data.OpenDataSetDialog"/> and after a user finishes the construction
            of a <see cref="P:Microsoft.Research.Science.Data.OpenDataSetDialog.DataSetUri"/>, the method tries to create a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance from the uri.
            If it fails, shows the error message and opens the dialog again (allowing to 
            correct the uri); otherwise, returns the DataSet instance.
            If the user cancels the operation, returns null.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OpenDataSetDialog.PromptOpenDataSet(System.String)">
            <summary>
            Prompts a user to open a DataSet.
            </summary>
            <param name="initialUri">Initial uri for the dialog.</param>
            <returns>If succeeds, returns constructed DataSet; otherwise, returns null.</returns>
            <remarks>
            <para>
            The method shows the dialog <see cref="T:Microsoft.Research.Science.Data.OpenDataSetDialog"/> and after a user finishes the construction
            of a <see cref="P:Microsoft.Research.Science.Data.OpenDataSetDialog.DataSetUri"/>, the method tries to create a <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instance from the uri.
            If it fails, shows the error message and opens the dialog again (allowing to 
            correct the uri); otherwise, returns the DataSet instance.
            If the user cancels the operation, returns null.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.OpenDataSetDialog.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="P:Microsoft.Research.Science.Data.OpenDataSetDialog.DataSetUri">
            <summary>
            Gets the DataSet URI created by a user to construct a DataSet;
            or sets an initial uri for a user to customize.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.PropertyGrid">
            <summary>
            PropertyGrid
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.PropertyGrid.InitializeComponent">
            <summary>
            InitializeComponent
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.Utilities.PushableStorage">
            <summary>
            The service which allows to directly push a dataset instead of indirect creating new dataset via serice port.
            </summary>
        </member>
        <member name="F:Microsoft.Research.Science.Data.Utilities.PushableStorage.Password">
            <summary>
            Gets the string that should be passed as a uri to push the dataset <see cref="!:Push"/>.
            </summary>
        </member>
        <member name="T:Microsoft.Research.Science.Data.SharedDataSet">
            <summary>
            Utility class that provides methods 
            to create <see cref="T:Microsoft.Research.Science.Data.DataSet"/> instances that may be shared between multiple threads and processes.
            </summary>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SharedDataSet.Open(System.String)">
            <summary>
            Opens a shared connection to a DataSet for a given <paramref name="uri"/>.
            </summary>
            <param name="uri">A file path or a URI string that points to a DataSet storage.</param>
            <returns>An instance of a shared <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>
            The method creates a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> instance and
            hosts a dataset from the <paramref name="uri"/> in it. The returned object is a <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>, attached
            to that storage service.</para>
            <para>
            Note that disposing the resulting <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/> doesn't dispose the "shadow" non-shared DataSet. 
            For example, if you use this method to open a NetCDF file, the file will be closed by garbage collector and not by the <see cref="M:Microsoft.Research.Science.Data.DataSet.Dispose"/> method.
            If it is a problem, consider using <see cref="M:Microsoft.Research.Science.Data.SharedDataSet.OpenCopy(System.String)"/> method instead.
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.SharedDataSet.OpenCopy(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SharedDataSet.OpenCopy(System.String)">
            <summary>
            Shares a copy of the dataset from a given <paramref name="uri"/>.
            </summary>
            <param name="uri">A file path or a URI string that points to a DataSet storage.</param>
            <returns>An instance of a shared <see cref="T:Microsoft.Research.Science.Data.DataSet"/>.</returns>
            <remarks>
            <para>
            The method creates a <see cref="T:Microsoft.Research.Science.Data.Service.StorageService"/> instance and
            hosts a copy of a dataset from <paramref name="uri"/> in it. The returned object is a <see cref="T:Microsoft.Research.Science.Data.Proxy.ProxyDataSet"/>, attached
            to that storage service.</para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.SharedDataSet.Open(System.String)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SharedDataSet.Publish(Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Makes the shared DataSet available via WCF.
            </summary>
            <param name="sharedDataSet">A shared DataSet instance to publish.</param>
            <returns>A <see cref="T:Microsoft.Research.Science.Data.IDataSetHosting"/> instance, exposing URI of a WCF service which is a proxy for the shared DataSet.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="sharedDataSet"/> is null.</exception>
            <exception cref="T:System.InvalidOperationException"><paramref name="sharedDataSet"/> is not shared.</exception>
            <remarks>
            <para>The DataSet instance <paramref name="sharedDataSet"/> must be shared in order to be able to perform possible concurrent requests when published.
            A shared DataSet can be created using <see cref="M:Microsoft.Research.Science.Data.SharedDataSet.Open(System.String)"/> methods. 
            </para>
            <para>This method makes a shared DataSet available via WCF channel using named pipe binding. There are other overloads of the method which allow to use
            specific WCF bindings.
            </para>
            <para>For the shared DataSet, a WCF service is started and works as a proxy for all requests against the dataset. The method returns an instance of
            the <see cref="T:Microsoft.Research.Science.Data.IDataSetHosting"/> interface, which exposes <see cref="P:Microsoft.Research.Science.Data.IDataSetHosting.Uri"/>
            URI of this service, and allows to stop the service. 
            It is possible to open another DataSet instance from that URI using "wcf" provider:
            <example>
            <code>
            Uri publishedDataSetUri = ...; 
            using(DataSet remoteDs = DataSet.Open("msds:wcf?uri=" + publishedDataSetUri.ToString()))
            {
                ... // working with remoteDs as with any other DataSet object
            }
            </code>
            </example>
            SDS-based application can connect to publishes DataSets using WCF provider, too. For example, DataSet Viewer tool can open such DataSets; for this, select
            "msds:wcf" provider in the dialog box for the "File / Open Data / From Uri" command, and specify the returned URI as a service URI.
            </para>
            <para>
            A shared DataSet can be published multiple times. 
            Disposing of the <see cref="T:Microsoft.Research.Science.Data.IDataSetHosting"/> finishes the publication.
            </para>
            </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SharedDataSet.Publish(Microsoft.Research.Science.Data.DataSet,System.Uri)">
            <summary>
            Makes the shared DataSet available via WCF.
            </summary>
            <param name="sharedDataSet">A shared DataSet instance to publish.</param>
            <param name="address">Base address of storage service. No actual endpoint 
            is created at this URI. Endpoints are created at 
            "&lt;baseAddress&gt;/control" and "&lt;baseAddress&gt;/data. 
            It is recommended that base address URI ends with "/"</param>
            <returns>A <see cref="T:Microsoft.Research.Science.Data.IDataSetHosting"/> instance, exposing URI of a WCF service which is a proxy for the shared DataSet.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="sharedDataSet"/> is null.</exception>
            <exception cref="T:System.InvalidOperationException"><paramref name="sharedDataSet"/> is not shared.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.SharedDataSet.Publish(Microsoft.Research.Science.Data.DataSet)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SharedDataSet.Publish(Microsoft.Research.Science.Data.DataSet,System.Boolean)">
            <summary>
            Makes the shared DataSet available via WCF.
            </summary>
            <param name="sharedDataSet">A shared DataSet instance to publish.</param>
            <param name="defaultEndPoints">True to create endpoints with unique name and named pipe binding
            with extended quotas or False to use service element from config file.</param>
            <returns>A <see cref="T:Microsoft.Research.Science.Data.IDataSetHosting"/> instance, exposing URI of a WCF service which is a proxy for the shared DataSet.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="sharedDataSet"/> is null.</exception>
            <exception cref="T:System.InvalidOperationException"><paramref name="sharedDataSet"/> is not shared.</exception>
            <seealso cref="M:Microsoft.Research.Science.Data.SharedDataSet.Publish(Microsoft.Research.Science.Data.DataSet)"/>
            <remarks>
            <para>If <paramref name="defaultEndPoints"/> is true, Name of endpoints will be <c>net.pipe://localhost/microsoft/research/science/data/StorageService/GUID/control</c> and
            <c>net.pipe://localhost/microsoft/research/science/data/StorageService/GUID/data</c>.
            They can be retrieved using<see cref="T:System.Uri"/> property.</para>
            <para>Otherwise, if <paramref name="defaultEndPoints"/> is true, bindings are loaded by name 
            from configuration files. For details <see cref="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.CreateBindingFromConfig(System.String)"/>.
            </para></remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SharedDataSet.Publish(Microsoft.Research.Science.Data.DataSet,System.Uri,System.ServiceModel.Channels.Binding,System.ServiceModel.Channels.Binding)">
            <summary>
            Makes the shared DataSet available via WCF.
            </summary>
            <param name="sharedDataSet">A shared DataSet instance to publish.</param>
            <param name="baseAddress">Base address of storage service. No actual endpoint is
            created at this URI. Endpoints are created at "lt;baseAddress&gt;/control" and
            "&lt;baseAddress&gt;/data. It is recommended that base address URI ends with "/"</param>
            <param name="controlBinding">WCF binding for control messages</param>
            <param name="dataBinding">WCF binding to data transfer</param>
            <returns>A <see cref="T:Microsoft.Research.Science.Data.IDataSetHosting"/> instance, exposing URI of a WCF service which is a proxy for the shared DataSet.</returns>
            <exception cref="T:System.ArgumentNullException"><paramref name="sharedDataSet"/> is null.</exception>
            <exception cref="T:System.InvalidOperationException"><paramref name="sharedDataSet"/> is not shared.</exception>
            <remarks><para>
            Bindings can be configured programmatically or loaded by name
            from configuration files. For details <see cref="M:Microsoft.Research.Science.Data.Proxy.WCF.Config.CreateBindingFromConfig(System.String)"/>
            </para>
            </remarks>
            <seealso cref="M:Microsoft.Research.Science.Data.SharedDataSet.Publish(Microsoft.Research.Science.Data.DataSet)"/>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.View(Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Runs the DataSetViewer to show the content of the dataset and waits for its close.
            </summary>
            <param name="ds">Any DataSet containing data to show.</param>
            <seealso cref="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.View(Microsoft.Research.Science.Data.DataSet,System.String)"/>
            <exception cref="T:System.ArgumentNullException">The <paramref name="ds"/> parameter is null.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.View(Microsoft.Research.Science.Data.DataSet,System.String)">
            <summary>
            Runs the DataSet Viewer to show the content of the dataset and waits until the DataSet Viewer is closed.
            </summary>
            <param name="ds">Any DataSet containing data to show.</param>
            <param name="hints">Visualization hints or .dsv file path. See remarks in <see cref="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.SpawnViewer(Microsoft.Research.Science.Data.DataSet)"/>.</param>
            <remarks>
            <para>
            The method is synchronous; so it returns only when the DataSetViewer is closed. A <paramref name="ds"/> can be any type of DataSet.
            </para>
            <seealso cref="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.SpawnViewer(Microsoft.Research.Science.Data.DataSet)"/>
            </remarks>
            <exception cref="T:System.ArgumentNullException">The <paramref name="ds"/> parameter is null.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.ViewSnapshot(Microsoft.Research.Science.Data.DataSet,System.String,System.Object,System.Boolean)">
             <summary>
             Uses the DataSetViewer to show the static copy of the dataset content.
             </summary>
             <param name="ds">DataSet to copy and show.</param>
             <param name="hints">Visualization hints or .dsv file path.</param>
             <param name="handle">An object that identifies the dataset viewer to show the dataset; if null, runs new dataset viewer.</param>
             <param name="restartViewer">Determines whether dataset viewer should be restarted if it was closed by a user for the given handle, or not. (Only if handle is not null)</param>
             <returns>An object that identifies the shown dataset viewer.</returns>
             <remarks>
             <para>The method is intended to be used when there is a dynamically updated dataset, whose intermediate states should be viewed.
             Thus this method makes an in-memory copy of the <paramref name="ds"/> and shows it using the DataSet Viewer application, if it is installed on the system.
             The method is non-blocking and returns immediately after copying is done.
             </para>
             <para>The benefit of the method is that it enable to use fast dataset providers (e.g. msds:memory2 or msds:memory) to perform computations and
             when required show intermediate or final results in the DataSet Viewer, thus reaching maximum perfomance.</para>
             <para>
             The returned value is an object identifying the DataSet Viewer instance which is showing the dataset. This object can be then passed to the
             method again using parameter <paramref name="handle"/> to view the next snapshot in the same DataSet Viewer (i.e. previous snapshot will be replaced with new snapshot). 
             The <paramref name="restartViewer"/> determines whether DataSet Viewer should be restarted, if it was closed, when the method is called for the same handle, or not.
             </para>
             <para>When DataSet Viewer shows a dataset, the program contiues to work, so that the data is available if even main code of the program completes.
             The program closes when all its started DataSet Viewers are closed.</para>
             <example>In the example we create and update a dataset containing one variable x. 
             Every 1000 iterations instant snapshot of the dataset is shown in the DataSet Viewer. 
             <code>
             using Microsoft.Research.Science.Data;
             using Microsoft.Research.Science.Data.Imperative;
             ...
             
              using (var ds = DataSet.Open("msds:memory"))
              {
                 ds.Add&lt;double[]&gt;("y", "i");
            
                 object handle = null;
                 for (int i = 0; i &lt; 10000; i++)
                 {
                     ds.Append("y", Math.Sin(i * Math.PI / 100.0));
                     if (i % 1000 == 1)
                     {
                         handle = ds.ViewSnapshot("y Style:Table", handle);
                     }
                     Thread.Sleep(5);
                 }
              }
             </code>
             </example>
             </remarks>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.SpawnViewer(Microsoft.Research.Science.Data.DataSet)">
            <summary>
            Runs the DataSetViewer to show the content of the dataset.
            </summary>
            <param name="ds">A shared DataSet containing the data to show.</param>
            <seealso cref="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.SpawnViewer(Microsoft.Research.Science.Data.DataSet,System.String)"/>
            <exception cref="T:System.ArgumentNullException">The <paramref name="ds"/> parameter is null.</exception>
            <returns>True, if viewer successfully started; otherwise, false.</returns>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.SpawnViewer(Microsoft.Research.Science.Data.DataSet,System.String)">
            <summary>
            Runs the DataSetViewer to show the content of the dataset.
            </summary>
            <param name="ds">A shared DataSet containing the data to show.</param>
            <param name="hints">Visualization hints or .dsv file path.</param>
            <remarks>
            <para>The <paramref name="ds"/> must be a shared DataSet instance; it may be created 
            using <see cref="M:Microsoft.Research.Science.Data.SharedDataSet.Open(System.String)"/> method. If <paramref name="ds"/> is not shared,
            the method always returns false.</para>
            <para>If <paramref name="hints"/> is a path to an existing DataSet Viewer package file 
            having .dsvx extension, all the visualization settings will be taken from this file.
            Otherwise the <paramref name="hints"/> will be passed to the DataSet Viewer 
            as a visualization hints string.</para>
            <para>Datasetviewer.exe must be in the current directory or in the PATH environment variable.</para>
            <para>
            The method is asynchronous and returns immediately.
            But the application works until all spawned viewers are closed.
            </para>
            </remarks>
            <returns>True, if viewer successfully started; otherwise, false.</returns>
            <exception cref="T:System.ArgumentNullException">The <paramref name="ds"/> parameter is null.</exception>
        </member>
        <member name="M:Microsoft.Research.Science.Data.SpawnViewerExtensions.StartDSV(Microsoft.Research.Science.Data.IServicePort,System.String,System.Boolean)">
            <summary>
            Runs separate process DataSetViewer.exe and attaches it the service port and sets initial hints.
            </summary>
            <param name="servicePort"></param>
            <param name="hints"></param>
            <returns>True, if viewer successfully started; otherwise, false.</returns>
        </member>
        <member name="T:XamlGeneratedNamespace.GeneratedInternalTypeHelper">
            <summary>
            GeneratedInternalTypeHelper
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.CreateInstance(System.Type,System.Globalization.CultureInfo)">
            <summary>
            CreateInstance
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.GetPropertyValue(System.Reflection.PropertyInfo,System.Object,System.Globalization.CultureInfo)">
            <summary>
            GetPropertyValue
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.SetPropertyValue(System.Reflection.PropertyInfo,System.Object,System.Object,System.Globalization.CultureInfo)">
            <summary>
            SetPropertyValue
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.CreateDelegate(System.Type,System.Object,System.String)">
            <summary>
            CreateDelegate
            </summary>
        </member>
        <member name="M:XamlGeneratedNamespace.GeneratedInternalTypeHelper.AddEventHandler(System.Reflection.EventInfo,System.Object,System.Delegate)">
            <summary>
            AddEventHandler
            </summary>
        </member>
    </members>
</doc>
